<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Public Health</journal-id>
<journal-title>Frontiers in Public Health</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Public Health</abbrev-journal-title>
<issn pub-type="epub">2296-2565</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fpubh.2021.772620</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Public Health</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Deploying Machine Learning Models Using Progressive Web Applications: Implementation Using a Neural Network Prediction Model for Pneumonia Related Child Mortality in The Gambia</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Mohammed</surname> <given-names>Nuredin I.</given-names></name>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1332947/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Jarde</surname> <given-names>Alexander</given-names></name>
</contrib>
<contrib contrib-type="author">
<name><surname>Mackenzie</surname> <given-names>Grant</given-names></name>
</contrib>
<contrib contrib-type="author">
<name><surname>D&#x00027;Alessandro</surname> <given-names>Umberto</given-names></name>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Jeffries</surname> <given-names>David</given-names></name>
<xref ref-type="corresp" rid="c002"><sup>&#x0002A;</sup></xref>
</contrib>
</contrib-group>
<aff><institution>Medical Research Council Unit, The Gambia at the London School of Hygiene &#x00026; Tropical Medicine</institution>, <addr-line>Banjul</addr-line>, <country>Gambia</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Edmond S. W. Ng, University of London, United Kingdom</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Jurgen Schmidt, Public Health England, United Kingdom; Christen M. Gray, AstraZeneca, United Kingdom; Russell Plunkett, Public Health England, United Kingdom</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Nuredin I. Mohammed <email>nuredin.mohammed&#x00040;lshtm.ac.uk</email></corresp>
<corresp id="c002">David Jeffries <email>david.jeffries&#x00040;lshtm.ac.uk</email></corresp>
<fn fn-type="other" id="fn001"><p>This article was submitted to Digital Public Health, a section of the journal Frontiers in Public Health</p></fn></author-notes>
<pub-date pub-type="epub">
<day>18</day>
<month>02</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2021</year>
</pub-date>
<volume>9</volume>
<elocation-id>772620</elocation-id>
<history>
<date date-type="received">
<day>08</day>
<month>09</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>09</day>
<month>12</month>
<year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2022 Mohammed, Jarde, Mackenzie, D&#x00027;Alessandro and Jeffries.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Mohammed, Jarde, Mackenzie, D&#x00027;Alessandro and Jeffries</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license></permissions>
<abstract>
<sec>
<title>Background</title>
<p>Translating research outputs into practical tools for medical practitioners is a neglected area and could have a substantial impact. One of the barriers to implementing artificial intelligence (AI) and machine learning (ML) applications is their practical deployment in the field. Traditional web-based (i.e., server sided) applications are dependent on reliable internet connections, which may not be readily available in rural areas. Native mobile apps require device specific programming skills as well as contemporary hardware and software, with often rapid and unpredictable platform specific changes. This is a major challenge for using AI/ML tools in resource-limited settings.</p>
</sec>
<sec>
<title>Methods</title>
<p>An emerging technology, progressive web applications (PWAs), first introduced by Google in 2015, offers an opportunity to overcome the challenges of deploying bespoke AI/ML systems. The same PWA code can be implemented across all desktop platforms, iOS and Android phones and tablets. In addition to platform independence, a PWA can be designed to be primarily offline.</p>
</sec>
<sec>
<title>Results</title>
<p>We demonstrate how a neural network-based pneumonia mortality prediction triage tool was migrated from a typical academic framework (paper and web-based prototype) to a tool that can be used offline on any mobile phone&#x02014;the most convenient deployment vehicle. After an initial online connection to download the software, the application runs entirely offline, reading data from cached memory, and running code <italic>via</italic> JavaScript. On mobile devices the application is installed as a native app, without the inconvenience of platform specific code through manufacturer code stores.</p>
</sec>
<sec>
<title>Discussion</title>
<p>We show that an ML application can be deployed as a platform independent offline PWA using a pneumonia-related child mortality prediction tool as an example. The aim of this tool was to assist clinical staff in triaging children for hospital admission, by predicting their risk of death. PWAs function seamlessly when their host devices lose internet connectivity, making them ideal for e-health apps that can help improve health and save lives in resource-limited settings in line with the UN Sustainable Development Goal 3 (SDG3).</p>
</sec></abstract>
<kwd-group>
<kwd>artificial intelligence (AI)</kwd>
<kwd>progressive web applications (PWAs)</kwd>
<kwd>digital health</kwd>
<kwd>pneumonia</kwd>
<kwd>mortality</kwd>
<kwd>machine learning (ML)</kwd>
</kwd-group>
<counts>
<fig-count count="3"/>
<table-count count="0"/>
<equation-count count="0"/>
<ref-count count="23"/>
<page-count count="6"/>
<word-count count="3883"/>
</counts>
</article-meta>
</front>
<body>
<sec id="s1">
<title>Background</title>
<p>Research on the application of machine learning algorithms in the healthcare sector has grown quickly in recent years and aims to develop and improve disease diagnosis, prognosis, and treatment, including personalized medicine (<xref ref-type="bibr" rid="B1">1</xref>). This in turn can accelerate the attainment of Sustainable Development Goal 3 (SDG3).<xref ref-type="fn" rid="fn0001"><sup>1</sup></xref> However, the deployment of such models is challenging in resource-limited settings, particularly in peripheral health facilities. For example, biomarkers are widely used in clinical medicine in several prediction frameworks, but their publication in the scientific literature rarely results in marketable applications (<xref ref-type="bibr" rid="B2">2</xref>). Two key impediments to successfully deploying machine learning (ML) based prediction models are the lack of standardization of research methods (<xref ref-type="bibr" rid="B3">3</xref>&#x02013;<xref ref-type="bibr" rid="B5">5</xref>) and lack of engagement from practitioners.</p>
<p>We aim to demonstrate a generic deployment process for neural networks using, as an example, a recent pneumonia mortality prediction machine learning algorithm (<xref ref-type="bibr" rid="B6">6</xref>) developed at the Medical Research Council Unit The Gambia at the London school of Hygiene and tropical Medicine (MRC Unit The Gambia at LSHTM). The initial goal of this study was to develop and validate a predictive mortality model in children 1&#x02013;59 months old using variables readily available to clinicians at the time of admission. As the vast majority of childhood Pneumonia deaths occur in low and middle income countries (<xref ref-type="bibr" rid="B7">7</xref>), it is important health workers can easily access and implement these predictive models in their clinical practice. This means deploying a prospective tool across all mobile platforms with seamless offline functionality as health facilities may have compromised internet connectivity. The primary aim of this paper is to describe the deployment of a neural network model; a complete description of the machine learning algorithm is given in another publication (<xref ref-type="bibr" rid="B6">6</xref>).</p>
<p>The machine learning model was developed using R software (<xref ref-type="bibr" rid="B8">8</xref>) as it is a fast development environment and widely used language for statistics and data science. The tool<xref ref-type="fn" rid="fn0002"><sup>2</sup></xref> was initially deployed as a web application using R Shiny<xref ref-type="fn" rid="fn0003"><sup>3</sup></xref> as it can then be conveniently deployed and distributed, <italic>via</italic> a private webserver, GitHub (a software repository) or shinyapps.io (a public webserver). Shiny is a web framework for R allowing rapid prototyping and deployment for researchers and data scientists. It is a server sided application, with no offline capacity and webpages do not always integrate well with mobile devices.</p>
<p>The primary requirement for the deployment of our proposed tool was that it should be available offline, on standard tablets and phones (mainly Android with an iOS minority) used in The Gambia. Secondly, we wanted it to run as a native app, but avoid the development of product and version specific apps as they add time, cost and skills overheads.</p>
<p>Until 2015, there was little alternative to developing platform specific apps. However, this changed with a new set of standards for Progressive Web Apps (PWAs) published by the Google Web Framework (<xref ref-type="bibr" rid="B9">9</xref>). In addition to cross-platform app compatibility, these standards also introduced offline support, synchronization tools and automatic conversion to app icons, i.e., no sideloading.</p>
</sec>
<sec sec-type="methods" id="s2">
<title>Methods</title>
<p>PWAs are multiplatform web application development approaches that can operate on most mobile and desktop platforms (Android, iOS, Windows, Linux.) <italic>via</italic> a browser which is ubiquitous on most operating systems (<xref ref-type="bibr" rid="B10">10</xref>). In addition to the usual web application components of HTML, CSS and JavaScript (JS), a PWA also consists of a manifest file and a service worker. The manifest file controls how the PWA is integrated into the desktop or mobile platform. A service worker is a JavaScript file that takes requests from the application and if it detects that the user is offline redirects requests to the appropriate cached resources for a seamless offline experience (<xref ref-type="bibr" rid="B11">11</xref>). PWAs are usually implemented <italic>via</italic> JavaScript and many web frameworks (software methods for standardizing and structuring web site development) have tools for bespoke development of PWA. For transparency, we wrote the code without using a web framework.</p>
<p>The original machine learning prediction model (<xref ref-type="bibr" rid="B6">6</xref>) was fitted to data on 11,012 children with clinical pneumonia from hospital admission data in The Gambia. The neural network was fitted in R using the caret machine learning library (<xref ref-type="bibr" rid="B12">12</xref>). To implement the machine learning component in a PWA, it must be converted into a JavaScript compatible format. The most efficient approach would be to transform the native R formats of the already fitted neural network directly into a JavaScript TensorFlow<xref ref-type="fn" rid="fn0004"><sup>4</sup></xref> format, as it requires no recoding of the original model. Unfortunately, we were not able to convert the neural network weights and meta data into the necessary JavaScript TensorFlow format, but this remains a desirable goal.</p>
<p>TensorFlow is an open source machine learning library with an R interface and we amended the original R code to use TensorFlow with the Keras (<xref ref-type="bibr" rid="B13">13</xref>, <xref ref-type="bibr" rid="B14">14</xref>)<xref ref-type="fn" rid="fn0005"><sup>5</sup></xref> R library to fit a neural network to the same data as in Jarde et al. (<xref ref-type="bibr" rid="B6">6</xref>). We re-coded the nested cross-validation in the original R code using the TensorFlow library rather than the caret library. The TensorFlow/Keras R libraries have lower-level functionality than caret and there is no direct replacement for the convenient wrapper functions. As the wrapper functions tend to obfuscate the processes it was not a straightforward code substitution process to replicate the original model. The nested cross validation algorithm with its performance metrics are described in detail in the <xref ref-type="supplementary-material" rid="SM1">Appendix 1</xref> in <xref ref-type="supplementary-material" rid="SM1">Supplementary Material</xref>.</p>
<p>The chosen Neural Network from the TensorFlow/Keras R code was saved in a native TensorFlow format. This format can be used across both R and Python, but not in web-based JavaScript application. The native format can be transformed into an appropriate JavaScript format using the TensorFlow JavaScript converter (for more details see the <xref ref-type="supplementary-material" rid="SM1">Appendix 2</xref> in <xref ref-type="supplementary-material" rid="SM1">Supplementary Material</xref>).</p>
</sec>
<sec sec-type="results" id="s3">
<title>Results</title>
<p>With the neural network now available in a JavaScript compatible format, a standard HTML webpage can be built, where users can input patient data for the selected predictor variables. These are then imported to the neural network model <italic>via</italic> JavaScript code, that predicts the mortality risk. Even for clinical staff, risk probabilities may not always be easy to interpret, especially if the mortality threshold cut-off is not 0.5. We used the positive and negative likelihood ratio discrimination metrics to divide the risk into low, medium and high categories. (<xref ref-type="supplementary-material" rid="SM1">Appendix 3</xref> in <xref ref-type="supplementary-material" rid="SM1">Supplementary Material</xref>). For a production version, it is likely that the risk stratification would also involve consultation with clinical staff and not be based purely on an algorithmic approach. The relevant risk category is then returned to the webpage <italic>via</italic> HTML. This is a standard web application, which becomes a PWA when a manifest and a service worker are included. As we are releasing a publicly available version of this PWA, we have anonymized the 5 predictor variables as variable 1 to 5 to prevent inappropriate use.</p>
<p><xref ref-type="fig" rid="F1">Figure 1</xref> shows the structure of the application (described in more detail in the <xref ref-type="supplementary-material" rid="SM1">Appendix 4</xref> in <xref ref-type="supplementary-material" rid="SM1">Supplementary Material</xref>) and the central role played by the service worker. Users can now access the PWA application from a web server, which are the hardware and software necessary to distribute webpages. These are extremely common and can be locally or cloud hosted and are straight forward to set-up. The code (CSS, JavaScript and HTML) are stored in the Cache Storage for offline use. Data (input and output) are more conveniently stored in an IndexedDB database, where each saved object has a key, easily allowing it to be set or retrieved <italic>via</italic> JavaScript code. Data stored here can also be encrypted, which is important for clinical data. Cache Storage and IndexedDB are available in all modern browsers. In this example the TensorFlow neural network meta data is stored in an IndexedDB and no patient data is stored.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>Structure of PWA for pneumonia prediction.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpubh-09-772620-g0001.tif"/>
</fig>
<p>The PWA pneumonia mortality prediction app is hosted on the MRC Gambia servers at <italic><ext-link ext-link-type="uri" xlink:href="http://https://stats.mrc.gm/NNmodel">https://stats.mrc.gm/NNmodel</ext-link></italic>. Given that PWA was a Google initiative, Chrome gives the best browser experience, although it is also supported on all major browsers. When users connect to this application on an Android phone, they see the mortality prediction webpage, but with an &#x0201C;add to home screen&#x0201D; button at the top of the screen (this is controlled by the manifest file, described above in the previous section and in the <xref ref-type="supplementary-material" rid="SM1">Appendix 4</xref> in <xref ref-type="supplementary-material" rid="SM1">Supplementary Material</xref>), as shown in <xref ref-type="fig" rid="F2">Figure 2A</xref>. After clicking this button, users are prompted to install the webpage as PWA from an &#x0201C;Install app&#x0201D; pop-up message (<xref ref-type="fig" rid="F2">Figure 2B</xref>), which creates the app icon (defined in the manifest file, <xref ref-type="fig" rid="F2">Figure 2C</xref>).</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>Installing a PWA application on an android phone.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpubh-09-772620-g0002.tif"/>
</fig>
<p>The icon in <xref ref-type="fig" rid="F2">Figure 2C</xref> can now be clicked and the prediction tool can be used like a &#x0201C;native app,&#x0201D; even though it is a webpage. As soon as the app has been downloaded it is immediately available to run as an offline app. The quality of the native experience depends on the styling of the webpage and web frameworks<xref ref-type="fn" rid="fn0006"><sup>6</sup></xref> can provide a richer user experience in comparison to this vanilla application which has minimum styling. The integration of PWA with iOS is constantly evolving but offers a similar experience with PWA icon functionality, except that users have to click the iOS &#x0201C;Share&#x0201D; button and select &#x0201C;Add to Home Screen&#x0201D; from the list of options as shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. The most reliable and automated way to update PWAs with new content is to use push notifications, which are clickable messages that are propagated to appropriate users. They are accepted by default for Android users, but it is the opposite for iOS users and with rapidly evolving standards it is not currently a stable option for iOS users.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>Installing a PWA application on an iOS phone.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fpubh-09-772620-g0003.tif"/>
</fig>
<p>PWA applications also run on all major desktop browsers, but the integration available <italic>via</italic> the manifest file is constantly changing depending on browser policy. For example, since early 2021, desktop Firefox browsers have discontinued their support for installing a PWA as a standalone app. On all major desktop browsers, the service worker functionality allows the applications to run offline. The desktop browsers also offer the best facilities for debugging PWA code and users can examine the offline storage objects.</p>
</sec>
<sec sec-type="discussion" id="s4">
<title>Discussion</title>
<p>Health apps are generally deployed either as standalone (installed on a specific device) or web-based applications (via browsers). Standalone apps do not require an internet connection and can be distributed as executable code, written in programming languages such as C/C&#x0002B;&#x0002B;, Java, R,Matlab, Python etc. These applications can be cumbersome to deploy to end users and requires the language and the application to be bundled into clickable apps using for example, Python&#x00027;s Pyinstaller (<xref ref-type="bibr" rid="B15">15</xref>), Matlab&#x00027;s compiler (<xref ref-type="bibr" rid="B16">16</xref>) or Electron based tools for R (<xref ref-type="bibr" rid="B17">17</xref>). Given the difficulties with these processes, Microsoft&#x00027;s Access and Excel with Visual Basic for Applications (VBA) (<xref ref-type="bibr" rid="B18">18</xref>), providing a comprehensive coding environment, are still widely used. However, VBA lacks the scientific libraries that are readily available in R, Python and Matlab. With these limitations, server sided web apps are an attractive alternative, and easy to deploy and update on any platform with an internet connection. The basic toolset of webpage design and functionality HTML/CSS/JS (<xref ref-type="bibr" rid="B19">19</xref>), has been complemented by many tools and frameworks that facilitate cross-platform production versions of scientific web-based apps such as Java Applets (<xref ref-type="bibr" rid="B20">20</xref>), Python&#x00027;s Django (<xref ref-type="bibr" rid="B21">21</xref>), R&#x00027;s Shiny and Matlab&#x00027;s web compiler (<xref ref-type="bibr" rid="B16">16</xref>). The primary disadvantage of these server-sided applications is that they require a reliable internet connection.</p>
<p>PWAs, <italic>via</italic> service workers allow seamless functioning of websites, even when the host device is offline. Additionally, they offer cross-platform deployment, and on phones and tablets the web-applications are run as &#x0201C;native-applications&#x0201D; from bespoke icons, without distribution through app stores. In a recent development, Microsoft has also embraced PWA technology <italic>via</italic> Blazor (<xref ref-type="bibr" rid="B22">22</xref>), which enables web development in C&#x00023; rather than being restricted to JavaScript.</p>
<p>In this paper we have not discussed data synchronization, which is another feature available in a PWA. Using PouchDB on the client side (i.e., phone or tablet) and CouchDB on the server, synchronization between the two is automatic as users go on and offline,<xref ref-type="fn" rid="fn0007"><sup>7</sup></xref> managed by the JavaScript service worker code. For programmers, this is a major advantage as there is no layer of code handling the synchronization between the client and server sided databases.</p>
<p>In this application we save no patient data but depending on ethical approval we could store the entered data and ask users to enter the actual mortality outcomes of anonymised subjects. This could provide a powerful central resource for pneumonia mortality machine learning prediction.</p>
<p>Generalization is a gold-standard for machine learning applications, but in situations such as this, different standards of care at different sites make this a very difficult goal. With easy deployment of machine learning applications, a centralized research institute could fit and deliver site specific models. Particular attention would be needed to avoid overfitting local data. PWAs on Android and iOS devices can access the GPS sensors with user permission and geolocation could restrict users to specific models for specific clinics. Data synchronization between the sites and the centralized location could enhance the performance of the learning algorithms.</p>
<p>Although offline usage is important for many settings, periodic use with very long offline periods could have unpredictable effects. Users will obviously miss app updates, but they will also be subject to the device operating system policy for managing app cache storage and inactive apps. There are also app storage limits, for example iOS currently limits the IndexedDB storage to 500 MB. We will explore using push notifications (<xref ref-type="bibr" rid="B23">23</xref>) to engage with active users and SMS for users who are offline.</p>
<p>Future work will also explore how to create PWAs for additional machine learning algorithms. R and Python are very common open-source programming languages for data science. They offer complete environments for training, validating, and testing machine learning algorithms. However, as demonstrated in this paper, there is no common standard for saving the model meta data. There are many JavaScript machine learning packages, but for most data scientists the pipeline of developing machine learning models that conform to good practice guidelines in JavaScript is daunting, lacking many of the validation and graphical tools offered by R and Python. Rapidly emerging technologies offer alternative languages to just using JavaScript in the web browser. For example, there is experimental work to develop a version of Python to run entirely in the browser.<xref ref-type="fn" rid="fn0008"><sup>8</sup></xref></p>
<p>In summary, we have demonstrated how to develop a cross-platform machine learning app to implement a pneumonia mortality prediction model that can be used on or offline. Although applied to a particular model, the coding framework is generic and can be applied to many data science applications. Thus, we encourage researchers to consider PWAs for deploying data science based products, particularly those developing models to aid health workers in their daily efforts to improve health and save lives in low-income settings.</p>
</sec>
<sec sec-type="data-availability" id="s5">
<title>Data Availability Statement</title>
<p>The data analyzed in this study is subject to the following licenses/restrictions: Please note the patient level hospital data is subject to ethical restrictions and is not publicly available. For access, please contact: Dr Grant Mackenzie Pediatrician/Clinical Epidemiologist MRC Unit the Gambia. Requests to access these datasets should be directed to <email>gmackenzie&#x00040;mrc.gm</email>.</p>
</sec>
<sec id="s6">
<title>Ethics Statement</title>
<p>The studies involving human participants were reviewed and approved by The MRC Gambia at LSHTM and Gambia Government Joint Ethics Committee, i.e., our paper is based on and used anonymized data from a previous study which was approved by this joint ethics committee. Written informed consent to participate in this study was provided by the participants&#x00027; legal guardian/next of kin.</p>
</sec>
<sec id="s7">
<title>Author Contributions</title>
<p>NM, AJ, GM, UD, and DJ contributed to the design and write-up of the study. DJ led the technical work converting the ML model into JavaScript compatible format assisted by NM. AJ, GM, and DJ developed the original model that was considered in this manuscript. All authors contributed to the article and approved the submitted version.</p>
</sec>
<sec sec-type="COI-statement" id="conf1">
<title>Conflict of Interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s8">
<title>Publisher&#x00027;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
</body>
<back>
<sec sec-type="supplementary-material" id="s9">
<title>Supplementary Material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="https://www.frontiersin.org/articles/10.3389/fpubh.2021.772620/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/fpubh.2021.772620/full#supplementary-material</ext-link></p>
<supplementary-material xlink:href="Data_Sheet_1.pdf" id="SM1" mimetype="application/pdf" xmlns:xlink="http://www.w3.org/1999/xlink"/></sec>
<ref-list>
<title>References</title>
<ref id="B1">
<label>1.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Panch</surname> <given-names>T</given-names></name> <name><surname>Szolovits</surname> <given-names>P</given-names></name> <name><surname>Atun</surname> <given-names>R</given-names></name></person-group>. <article-title>Artificial intelligence, machine learning and health systems</article-title>. <source>J Glob Health.</source> (<year>2018</year>) <volume>8</volume>:<fpage>20303</fpage>. <pub-id pub-id-type="doi">10.7189/jogh.08.020303</pub-id><pub-id pub-id-type="pmid">30405904</pub-id></citation></ref>
<ref id="B2">
<label>2.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Drucker</surname> <given-names>E</given-names></name> <name><surname>Krapfenbauer</surname> <given-names>K</given-names></name></person-group>. <article-title>Pitfalls and limitations in translation from biomarker discovery to clinical utility in predictive and personalised medicine</article-title>. <source>EPMA J.</source> (<year>2013</year>) <volume>4</volume>:<fpage>7</fpage>. <pub-id pub-id-type="doi">10.1186/1878-5085-4-7</pub-id><pub-id pub-id-type="pmid">23442211</pub-id></citation></ref>
<ref id="B3">
<label>3.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Poste</surname> <given-names>G</given-names></name></person-group>. <article-title>Bring on the biomarkers</article-title>. <source>Nature.</source> (<year>2011</year>) <volume>469</volume>:<fpage>156</fpage>&#x02013;<lpage>7</lpage>. <pub-id pub-id-type="doi">10.1038/469156a</pub-id><pub-id pub-id-type="pmid">21228852</pub-id></citation></ref>
<ref id="B4">
<label>4.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hu</surname> <given-names>Y</given-names></name> <name><surname>Jacob</surname> <given-names>J</given-names></name> <name><surname>Parker</surname> <given-names>GJM</given-names></name> <name><surname>Hawkes</surname> <given-names>DJ</given-names></name> <name><surname>Hurst</surname> <given-names>JR</given-names></name> <name><surname>Stoyanov</surname> <given-names>D</given-names></name></person-group>. <article-title>The challenges of deploying artificial intelligence models in a rapidly evolving pandemic</article-title>. <source>Nat Mach Intell.</source> (<year>2020</year>) <volume>2</volume>:<fpage>298</fpage>&#x02013;<lpage>300</lpage>. <pub-id pub-id-type="doi">10.1038/s42256-020-0185-2</pub-id></citation>
</ref>
<ref id="B5">
<label>5.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Paleyes</surname> <given-names>A</given-names></name> <name><surname>Urma</surname> <given-names>R-G</given-names></name> <name><surname>Lawrence</surname> <given-names>N</given-names></name></person-group>. <article-title>Challenges in deploying machine learning: a survey of case studies</article-title>. ArXiv. abs/2011.0. (<year>2020</year>)</citation>
</ref>
<ref id="B6">
<label>6.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jarde</surname> <given-names>A</given-names></name> <name><surname>Jeffries</surname> <given-names>DJ</given-names></name> <name><surname>Mackenzie</surname> <given-names>GA</given-names></name></person-group>. <article-title>Development and validation of a model for the prediction of mortality in children under five years with clinical pneumonia in rural gambia</article-title>. <source>medRxiv.</source> (<year>2021</year>) <volume>04</volume>:<fpage>21260737</fpage>.</citation>
</ref>
<ref id="B7">
<label>7.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zar</surname> <given-names>HJ</given-names></name> <name><surname>Madhi</surname> <given-names>SA</given-names></name> <name><surname>Aston</surname> <given-names>SJ</given-names></name> <name><surname>Gordon</surname> <given-names>SB</given-names></name></person-group>. <article-title>Pneumonia in low and middle income countries: progress and challenges</article-title>. <source>Thorax.</source> (<year>2013</year>) <volume>68</volume>:<fpage>1052</fpage>&#x02013;<lpage>6</lpage>. <pub-id pub-id-type="doi">10.1136/thoraxjnl-2013-204247</pub-id><pub-id pub-id-type="pmid">23956020</pub-id></citation></ref>
<ref id="B8">
<label>8.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>R Core Team</collab></person-group>. <article-title>R: A Language Environment for Statistical Computing [Internet]. Vienna, Austria</article-title> (<year>2021</year>). Available online at: <ext-link ext-link-type="uri" xlink:href="https://www.r-project.org/">https://www.r-project.org/</ext-link></citation>
</ref>
<ref id="B9">
<label>9.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bi&#x000F8;rn-Hansen</surname> <given-names>A</given-names></name> <name><surname>Majchrzak</surname> <given-names>TA</given-names></name> <name><surname>Gr&#x000F8;nli</surname> <given-names>T-M</given-names></name></person-group>. <article-title>Progressive web apps: the possible web-native unifier for mobile development</article-title>. <source>Procedia Comput Sci</source>. (<year>2017</year>) <volume>17</volume>:<fpage>344</fpage>&#x02013;<lpage>51</lpage>. <pub-id pub-id-type="doi">10.5220/0006353703440351</pub-id></citation>
</ref>
<ref id="B10">
<label>10.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>R&#x000EA;go</surname> <given-names>F</given-names></name> <name><surname>Portela</surname> <given-names>F</given-names></name> <name><surname>Santos</surname> <given-names>MF</given-names></name></person-group>. <article-title>Towards PWA in healthcare</article-title>. <source>Procedia Comput Sci</source>. (<year>2019</year>) <volume>160</volume>:<fpage>678</fpage>&#x02013;<lpage>83</lpage>. <pub-id pub-id-type="doi">10.1016/j.procs.2019.11.028</pub-id></citation>
</ref>
<ref id="B11">
<label>11.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Hume</surname> <given-names>DA</given-names></name></person-group>. <source>Progressive web Apps</source>. <publisher-loc>Clarendon</publisher-loc>: <publisher-name>Manning</publisher-name> (<year>2017</year>).</citation>
</ref>
<ref id="B12">
<label>12.</label>
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Kuhn</surname> <given-names>M</given-names></name></person-group>. <article-title>Caret: Classification and Regression Training, Version 6.0.</article-title> (<year>2021</year>). Available online at: <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/caret/caret.pdf">https://cran.r-project.org/web/packages/caret/caret.pdf</ext-link> (accessed October 09, 2021).</citation>
</ref>
<ref id="B13">
<label>13.</label>
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Allaire</surname> <given-names>JJ</given-names></name> <name><surname>Chollet</surname> <given-names>F</given-names></name></person-group> <article-title>keras: R Interface to &#x0201C;Keras&#x0201D;</article-title> (<year>2021</year>). Available online at: <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=keras">https://cran.r-project.org/package=keras</ext-link> (accessed on 18/11/2021).<pub-id pub-id-type="pmid">32652926</pub-id></citation></ref>
<ref id="B14">
<label>14.</label>
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Allaire</surname> <given-names>JJ</given-names></name> <name><surname>Tang</surname> <given-names>Y</given-names></name></person-group>. <article-title>Tensorflow: R Interface to &#x0201C;TensorFlow&#x0201D;.</article-title> (<year>2021</year>). Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/package=tensorflow">https://cran.r-project.org/package=tensorflow</ext-link>&#x0201D; (accessed on 18/11/2021).<pub-id pub-id-type="pmid">32652926</pub-id></citation></ref>
<ref id="B15">
<label>15.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>PyInstaller, Quickstart</collab></person-group>. <article-title>PyInstaller Bundles Python Applications</article-title> Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="http://www.pyinstaller.org/">http://www.pyinstaller.org/</ext-link>&#x0201D; (accessed on 18/11/2021).</citation>
</ref>
<ref id="B16">
<label>16.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>MATLAB Compiler</collab></person-group>. <article-title>MATLAB.</article-title> (<year>2021</year>). Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="https://www.mathworks.com/products/compiler.html">https://www.mathworks.com/products/compiler.html</ext-link>&#x0201D; (accessed on 18/11/2021).</citation>
</ref>
<ref id="B17">
<label>17.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>Electron R shiny. Dirkschumacher/r-shiny-electron: WIP.</collab></person-group> (<year>2021</year>). Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="https://github.com/dirkschumacher/r-shiny-electron&#x00023;readme">https://github.com/dirkschumacher/r-shiny-electron&#x00023;readme</ext-link>&#x0201D; (accessed on 18/11/2021).</citation>
</ref>
<ref id="B18">
<label>18.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>Microsoft Docs,. Access Visual Basic for Applications (VBA) reference.</collab></person-group> (<year>2021</year>). Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="https://docs.microsoft.com/en-us/office/vba/api/overview/access">https://docs.microsoft.com/en-us/office/vba/api/overview/access</ext-link>&#x0201D; (accessed on 18/11/2021).</citation>
</ref>
<ref id="B19">
<label>19.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>W3C. Web Design and Applications.</collab></person-group> (<year>2021</year>). Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="https://www.w3.org/standards/webdesign/">https://www.w3.org/standards/webdesign/</ext-link>&#x0201D; (accessed on 18/11/2021).</citation>
</ref>
<ref id="B20">
<label>20.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>Oracle. Applets.</collab></person-group> (<year>2022</year>). Available online at: <ext-link ext-link-type="uri" xlink:href="https://www.oracle.com/java/technologies/applets.htm">https://www.oracle.com/java/technologies/applets.htm</ext-link> (accessed on 18/11/2021).</citation>
</ref>
<ref id="B21">
<label>21.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>Django. The Web Framework for Perfectionists With Deadlines.</collab></person-group> (<year>2021</year>). Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="https://www.djangoproject.com/">https://www.djangoproject.com/</ext-link>&#x0201D; (accessed on 18/11/2021).</citation>
</ref>
<ref id="B22">
<label>22.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>Build Progressive Web Applications with ASP,. NET Core Blazor WebAssembly | Microsoft Docs.</collab></person-group> (<year>2021</year>). Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="https://docs.microsoft.com/en-us/aspnet/core/blazor/progressive-web-app?view=aspnetcore-5.0&#x00026;tabs=visual-studio">https://docs.microsoft.com/en-us/aspnet/core/blazor/progressive-web-app?view=aspnetcore-5.0&#x00026;tabs=visual-studio</ext-link>&#x0201D; (accessed on 18/11/2021)</citation>
</ref>
<ref id="B23">
<label>23.</label>
<citation citation-type="web"><person-group person-group-type="author"><collab>Google Developers,. Introduction to Push Notifications Web.</collab></person-group> (<year>2021</year>). Available online at: &#x0201C;<ext-link ext-link-type="uri" xlink:href="https://developers.google.com/web/ilt/pwa/introduction-to-push-notifications">https://developers.google.com/web/ilt/pwa/introduction-to-push-notifications</ext-link>&#x0201D; (accessed on18/11/2021).</citation>
</ref>
</ref-list>
<fn-group>
<fn id="fn0001"><p><sup>1</sup><ext-link ext-link-type="uri" xlink:href="https://sdgs.un.org/goals/goal3">https://sdgs.un.org/goals/goal3</ext-link>. Goal 3 | Department of Economic and Social Affairs.</p></fn>
<fn id="fn0002"><p><sup>2</sup><ext-link ext-link-type="uri" xlink:href="https://github.com/MRCG-djeffries/mortality-prediction">https://github.com/MRCG-djeffries/mortality-prediction</ext-link>. GitHub - MRCG-djeffries/mortality-prediction.</p></fn>
<fn id="fn0003"><p><sup>3</sup><ext-link ext-link-type="uri" xlink:href="https://shiny.rstudio.com">https://shiny.rstudio.com</ext-link>. Shiny.</p></fn>
<fn id="fn0004"><p><sup>4</sup><ext-link ext-link-type="uri" xlink:href="https://www.tensorflow.org/js">https://www.tensorflow.org/js</ext-link>. TensorFlow.js | Machine Learning for JavaScript Developers.</p></fn>
<fn id="fn0005"><p><sup>5</sup><ext-link ext-link-type="uri" xlink:href="https://tensorflow.rstudio.com/">https://tensorflow.rstudio.com/</ext-link>. TensorFlow for R.</p></fn>
<fn id="fn0006"><p><sup>6</sup><ext-link ext-link-type="uri" xlink:href="https://framework7.io/">https://framework7.io/</ext-link>. Framework7 - Full Featured Framework For Building iOS, Android \&#x00026; Desktop Apps.</p></fn>
<fn id="fn0007"><p><sup>7</sup><ext-link ext-link-type="uri" xlink:href="https://pouchdb.com/guides/replication.html">https://pouchdb.com/guides/replication.html</ext-link>. Replication.</p></fn>
<fn id="fn0008"><p><sup>8</sup><ext-link ext-link-type="uri" xlink:href="https://hacks.mozilla.org/2019/04/pyodide-bringing-the-scientific-python-stack-to-the-browser/">https://hacks.mozilla.org/2019/04/pyodide-bringing-the-scientific-python-stack-to-the-browser/</ext-link>. Pyodide: Bringing the scientific Python stack to the browser - Mozilla Hacks - the Web developer blog.</p></fn>
</fn-group>
</back>
</article>