<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.0 20040830//EN" "http://dtd.nlm.nih.gov/publishing/2.0/journalpublishing.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article" dtd-version="2.0">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">JMI</journal-id>
      <journal-id journal-id-type="nlm-ta">JMIR Med Inform</journal-id>
      <journal-title>JMIR Medical Informatics</journal-title>
      <issn pub-type="epub">2291-9694</issn>
      <publisher>
        <publisher-name>JMIR Publications</publisher-name>
        <publisher-loc>Toronto, Canada</publisher-loc>
      </publisher>
    </journal-meta>
    <article-meta>
    <article-id pub-id-type="publisher-id">v5i1e9</article-id>
    <article-id pub-id-type="pmid">28347973</article-id>
    <article-id pub-id-type="doi">10.2196/medinform.6693</article-id>
    <article-categories>
      <subj-group subj-group-type="heading">
        <subject>Original Paper</subject>
      </subj-group>
      <subj-group subj-group-type="article-type">
        <subject>Original Paper</subject>
      </subj-group>
    </article-categories>
    <title-group>
      <article-title>A Software Framework for Remote Patient Monitoring by Using Multi-Agent Systems Support</article-title>
    </title-group>
    <contrib-group>
      <contrib contrib-type="editor">
        <name>
          <surname>Eysenbach</surname>
          <given-names>Gunther</given-names>
        </name>
      </contrib>
    </contrib-group>
    <contrib-group>
      <contrib contrib-type="reviewer">
        <name>
          <surname>Cowan</surname>
          <given-names>Donald</given-names>
        </name>
      </contrib>
      <contrib contrib-type="reviewer">
        <name>
          <surname>Drobics</surname>
          <given-names>Mario</given-names>
        </name>
      </contrib>
      <contrib contrib-type="reviewer">
        <name>
          <surname>Rawstorn</surname>
          <given-names>Jonathan</given-names>
        </name>
      </contrib>
      <contrib contrib-type="reviewer">
        <name>
          <surname>Matava</surname>
          <given-names>Clyde</given-names>
        </name>
      </contrib>
      <contrib contrib-type="reviewer">
        <name>
          <surname>Gay</surname>
          <given-names>Valerie</given-names>
        </name>
      </contrib>
    </contrib-group>
    <contrib-group>
      <contrib contrib-type="author" id="contrib1" corresp="yes" equal-contrib="yes">
      <name name-style="western">
        <surname>Fernandes</surname>
        <given-names>Chrystinne Oliveira</given-names>
      </name>
      <degrees>MSc</degrees>
      <xref rid="aff1" ref-type="aff">1</xref>
      <address>
        <institution>Department of Informatics</institution>
        <institution>Pontifical Catholic University of Rio de Janeiro (PUC-Rio)</institution>
        <addr-line>RDC Bldg, 4th Fl</addr-line>
        <addr-line>225 Marquês de São Vicente St</addr-line>
        <addr-line>Rio de Janeiro, 22451-900</addr-line>
        <country>Brazil</country>
        <phone>55 521 3527 1510</phone>
        <fax>55 21 3527 1530</fax>
        <email>chrystinne@gmail.com</email>
      </address>  
      <ext-link ext-link-type="orcid">http://orcid.org/0000-0002-8623-9500</ext-link></contrib>
      <contrib contrib-type="author" id="contrib2" equal-contrib="yes">
        <name name-style="western">
          <surname>Lucena</surname>
          <given-names>Carlos José Pereira De</given-names>
        </name>
        <degrees>PhD</degrees>
        <xref rid="aff1" ref-type="aff">1</xref>
        <ext-link ext-link-type="orcid">http://orcid.org/0000-0001-9669-2352</ext-link>
      </contrib>
    </contrib-group>
    <aff id="aff1">
    <sup>1</sup>
    <institution>Department of Informatics</institution>
    <institution>Pontifical Catholic University of Rio de Janeiro (PUC-Rio)</institution>  
    <addr-line>Rio de Janeiro</addr-line>
    <country>Brazil</country></aff>
    <author-notes>
      <corresp>Corresponding Author: Chrystinne Oliveira Fernandes 
      <email>chrystinne@gmail.com</email></corresp>
    </author-notes>
    <pub-date pub-type="collection"><season>Jan-Mar</season><year>2017</year></pub-date>
    <pub-date pub-type="epub">
      <day>27</day>
      <month>03</month>
      <year>2017</year>
    </pub-date>
    <volume>5</volume>
    <issue>1</issue>
    <elocation-id>e9</elocation-id>
    <!--history from ojs - api-xml-->
    <history>
      <date date-type="received">
        <day>24</day>
        <month>9</month>
        <year>2016</year>
      </date>
      <date date-type="rev-request">
        <day>17</day>
        <month>10</month>
        <year>2016</year>
      </date>
      <date date-type="rev-recd">
        <day>16</day>
        <month>11</month>
        <year>2016</year>
      </date>
      <date date-type="accepted">
        <day>29</day>
        <month>1</month>
        <year>2017</year>
      </date>
    </history>
    <!--(c) the authors - correct author names and publication date here if necessary. Date in form ', dd.mm.yyyy' after jmir.org-->
    <copyright-statement>©Chrystinne Oliveira Fernandes, Carlos José Pereira De Lucena. Originally published in JMIR Medical Informatics (http://medinform.jmir.org), 27.03.2017.</copyright-statement>
    <copyright-year>2017</copyright-year>
    <license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/2.0/">
      <p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (http://creativecommons.org/licenses/by/2.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work, first published in JMIR Medical Informatics, is properly cited. The complete bibliographic information, a link to the original publication on http://medinform.jmir.org/, as well as this copyright and license information must be included.</p>
    </license>  
    <self-uri xlink:href="http://medinform.jmir.org/2017/1/e9/" xlink:type="simple"/>
    <abstract>
      <sec sec-type="background">
        <title>Background</title>
        <p>Although there have been significant advances in network, hardware, and software technologies, the health care environment has not taken advantage of these developments to solve many of its inherent problems. Research activities in these 3 areas make it possible to apply advanced technologies to address many of these issues such as real-time monitoring of a large number of patients, particularly where a timely response is critical.</p>
      </sec>
      <sec sec-type="objective">
        <title>Objective</title>
        <p>The objective of this research was to design and develop innovative technological solutions to offer a more proactive and reliable medical care environment. The short-term and primary goal was to construct IoT4Health, a flexible software framework to generate a range of Internet of things (IoT) applications, containing components such as multi-agent systems that are designed to perform Remote Patient Monitoring (RPM) activities autonomously. An investigation into its full potential to conduct such patient monitoring activities in a more proactive way is an expected future step.</p>
      </sec>
      <sec sec-type="methods">
        <title>Methods</title>
        <p>A framework methodology was selected to evaluate whether the RPM domain had the potential to generate customized applications that could achieve the stated goal of being responsive and flexible within the RPM domain. As a proof of concept of the software framework’s flexibility, 3 applications were developed with different implementations for each framework hot spot to demonstrate potential. Agents4Health was selected to illustrate the instantiation process and IoT4Health’s operation. To develop more concrete indicators of the responsiveness of the simulated care environment, an experiment was conducted while Agents4Health was operating, to measure the number of delays incurred in monitoring the tasks performed by agents.</p>
      </sec>
      <sec sec-type="results">
        <title>Results</title>
        <p>IoT4Health’s construction can be highlighted as our contribution to the development of eHealth solutions. As a software framework, IoT4Health offers extensibility points for the generation of applications. Applications can extend the framework in the following ways: identification, collection, storage, recovery, visualization, monitoring, anomalies detection, resource notification, and dynamic reconfiguration. Based on other outcomes involving observation of the resulting applications, it was noted that its design contributed toward more proactive patient monitoring. Through these experimental systems, anomalies were detected in real time, with agents sending notifications instantly to the health providers.</p>
      </sec>
      <sec sec-type="conclusions">
        <title>Conclusions</title>
        <p>We conclude that the cost-benefit of the construction of a more generic and complex system instead of a custom-made software system demonstrated the worth of the approach, making it possible to generate applications in this domain in a more timely fashion.</p>
        
      </sec>
    </abstract>
    <kwd-group>
      <kwd>eHealth systems</kwd>
      <kwd>remote patient monitoring</kwd>
      <kwd>biometric sensors</kwd>
    </kwd-group></article-meta>
  </front>
  <body>
    <sec sec-type="introduction">
      <title>Introduction</title>
      <sec>
        <title>Innovative Technological-Based Solutions</title>
        <p>Technological solutions can be applied to deal better with current operational problems involving the delivery of health care. The application of computational tools to hospital activities has the capacity to transform the present operational environment through activities such as improvement of work processes. Examples of improvements brought by the use of innovative technological solutions are as follows:</p>
        <p>1. Change in the way the physician-patient–relationship occurs, because of Remote Patient Monitoring (RPM) possibilities [<xref ref-type="bibr" rid="ref1">1</xref>]</p>
        <p>2. Ease of information access and sharing among the medical team and the patients’ relatives [<xref ref-type="bibr" rid="ref2">2</xref>]</p>
        <p>3. More mobility for patients, whose health status can be monitored from home or work, without being restricted to hospital facilities</p>
        <p>4. Possibility of collaborative work between the local team and external professionals; it allows a second opinion about patients’ diagnoses and treatments, as patient information is already in a distributed database</p>
        <p>5. Possibility of automatic processes such as vital patient data collection by using sensors</p>
        <p>6. Remote and real-time monitoring of patient health conditions</p>
        <p>7. Alerts to health care professionals in emergency situations</p>
        <p>8. Decrease in elapsed time for detection of anomalies in the vital signs of monitored patients, by using software agents; in this context, software agents consist of computational entities that perform activities in response to emergency situations</p>
        <p>Investments in RPM technology can provide better support for patients from their health care team and perhaps make resources available for other health-related activities.</p>
      </sec>
      <sec>
        <title>Theoretical Background</title>
        <sec>
          <title>Internet of Things (IoT)</title>
          <p>IoT is a field within Computer Science that has grown quickly in recent years. Kevin Ashton introduced the term “Internet of Things” in 1999 [<xref ref-type="bibr" rid="ref3">3</xref>]. One can define IoT as a global network of smart devices that can sense and interact with their environment for communication with users and other things (smart devices) and systems. In this context, things could be identified solely by using radio-frequency identification (RFID) [<xref ref-type="bibr" rid="ref4">4</xref>] tags in order to be connected to the Internet and publish their information. Things are physical objects such as refrigerators, cars, walking sticks, dog collars, and whatever object comes to mind.</p>
          <p>Thus, using sensors, actuators, and RFID-like technology, objects in the environment could be viewed, identified, and controlled more autonomously. In this case, things themselves could specify when they needed to be replaced, fixed, or report if they could provide data [<xref ref-type="bibr" rid="ref3">3</xref>].</p>
          
        </sec>
        <sec>
          <title>IoT Technologies: RFID, Microcontrollers, and Sensors</title>
          <p>To develop the IoT patient-monitoring application described in this paper, 3 main IoT technologies have been used: RFID, micro-controllers, and sensors.</p>
          <p>RFID is an automatic identification method that utilizes radio signals, recovering and storing data remotely through devices called RFID tags. These devices are used for identification, sensing, and communication [<xref ref-type="bibr" rid="ref5">5</xref>].</p>
          <p>Arduino [<xref ref-type="bibr" rid="ref6">6</xref>] microcontrollers, which are open source platforms for electronic prototyping, are also used: Uno R3 [<xref ref-type="bibr" rid="ref7">7</xref>] and Yún [<xref ref-type="bibr" rid="ref8">8</xref>] models (<xref ref-type="fig" rid="figure1">Figure 1</xref>). Microcontrollers can be programmed to process inputs and outputs of connected external components (<xref ref-type="fig" rid="figure1">Figure 1</xref>). One can use embedded computing to allow the construction of systems that interact with the environment using hardware and software [<xref ref-type="bibr" rid="ref9">9</xref>].</p>
          <p>A variety of sensors can be used to collect data for IoT applications such as temperature, humidity, light level, oxygen level, and sensor presence, among others.</p>
          <p>In eHealth, it is common for some devices to contain a number of sensors linked together, such as in the HealthPatch MD [<xref ref-type="bibr" rid="ref10">10</xref>] Vital Connect health-monitoring sensor (<xref ref-type="fig" rid="figure2">Figure 2</xref>). The sensor is a small adhesive patch with a module that measures heart rate, breathing frequency, body temperature, posture, detection of falls, and also has Internet connectivity. Another example is the eHealth Sensor Platform Complete Kit [<xref ref-type="bibr" rid="ref11">11</xref>]. It contains an eHealth Sensor Shield compatible with Arduino and Raspberry Pi [<xref ref-type="bibr" rid="ref12">12</xref>] microcontrollers (<xref ref-type="fig" rid="figure2">Figure 2</xref>), plus 10 sensors to collect biometric data (<xref ref-type="fig" rid="figure2">Figure 2</xref>): pulse, oxygen levels in blood, airflow (breathing), body temperature, electrocardiogram (ECG), glucometer, galvanic skin response, blood pressure, patient position (accelerometer), and muscle or electromyography sensor (EMG).</p>
          <fig id="figure1" position="float">
            <label>Figure 1</label>
            <caption>
              <p>Arduino micro-controllers, Uno R3 (on the left) and Yún (on the right) models.</p>
            </caption>
            <graphic xlink:href="medinform_v5i1e9_fig1.jpg" alt-version="no" mimetype="image" position="float" xlink:type="simple"/>
          </fig>
          <fig id="figure2" position="float">
            <label>Figure 2</label>
            <caption>
              <p>HealthPatch MD (on the left), e-Health Sensors Shield and e-Health Sensor Platform Complete Kit (on the right).</p>
            </caption>
            <graphic xlink:href="medinform_v5i1e9_fig2.png" alt-version="no" mimetype="image" position="float" xlink:type="simple"/>
          </fig>
        </sec>
        <sec>
          <title>Software Agents</title>
          <p>A software agent [<xref ref-type="bibr" rid="ref13">13</xref>] is an element of a computational system that is situated in an environment where it can perform autonomous actions in order to reach its assigned goals. An agent is both autonomous and capable of learning from its experience. Autonomy has been acknowledged as a key characteristic of an agent in satisfying its goals [<xref ref-type="bibr" rid="ref14">14</xref>]. In this context, autonomy means operating without the intervention of humans or other systems, although the set of possible actions should be previously defined.</p>
          <p>Although agents control their behavior and internal states, they do not have full control of the environment in which they operate. Agents contain a set of actions that can carry out tasks, the execution of which can result in changes in the environments. For this reason, one can consider that an agent can have partial control and influence over its environment depending on the action performed [<xref ref-type="bibr" rid="ref15">15</xref>].</p>
          <p>In general, the use of software agents is justified by the fact that asynchronous software systems require autonomous operation, a general argument that can be applied to our solution.</p>
          
          
          
        </sec>
        <sec>
          <title>General Concepts About Software Frameworks</title>
          <p>Frameworks are tools used to generate applications related to a specific domain; that is, to cope with a family of related problems [<xref ref-type="bibr" rid="ref16">16</xref>]. The choice of using existing frameworks or developing new application generators is based on whether the framework can offer design and code reuse. Thus, frameworks can usually increase software development productivity and shorter time-to-market, compared with traditional approaches.</p>
          <p>Frameworks contain fixed and flexible points known as frozen spots and hot spots, respectively. Hot spots are extension points that allow developers to create a new application from the framework instantiation process. In this case, developers should create specific application code for each hot spot, through the implementation of abstract classes and methods defined in the framework. Frozen spots consist of the framework’s kernel, corresponding to its fixed parts, previously implemented and hard to change. A frozen spot calls one or more of the application’s hot spots and is present in each framework’s instance [<xref ref-type="bibr" rid="ref16">16</xref>].</p>
          <p>Creating a new instance of a framework consists of 3 main steps: (1) Domain analysis, (2) Design, and (3) Instantiation. The domain analysis step includes requirements elicitation including definitions of hot and frozen spots. The design step is responsible for specifying the hot and frozen spots through a modeling language such as UML [<xref ref-type="bibr" rid="ref17">17</xref>] diagrams. Design patterns [<xref ref-type="bibr" rid="ref18">18</xref>] are also used in this phase. The instantiation phase corresponds to the application generation phase through hot spot implementation [<xref ref-type="bibr" rid="ref16">16</xref>].</p>
        </sec>
        <sec>
          <title>Related Work</title>
          <p>Our proposal takes a similar approach to that in [<xref ref-type="bibr" rid="ref19">19</xref>]. This paper shows the implementation of a distributed information infrastructure that uses the intelligent agent paradigm for: (1) automatically notifying the patient’s medical team regarding the abnormalities in his or her health status; (2) offering medical advice from a distance; and (3) enabling continuous monitoring of a patient’s health status. In addition, the authors have promoted the adoption of ubiquitous computing systems [<xref ref-type="bibr" rid="ref20">20</xref>] and apps that allow immediate analysis of a patient’s physiological data such as a personalized feedback of their condition in real time, by using an alarm-and-remember mechanism. In this solution, patients can be evaluated, diagnosed, and cared for through a mode that is both remote and ubiquitous. In the case of rapid deterioration of a patient’s condition, the system automatically notifies the medical team through voice calls or SMS messages, providing a first-level medical response. This proposal differs from ours, in that the resulting application is closed, as opposed to our broader eHealth application generator.</p>
          <p>The approach in [<xref ref-type="bibr" rid="ref21">21</xref>] focuses on design and development of a distributed information system based on mobile agents to allow automatic and real-time fetal monitoring. Devices such as a PDA, mobile phone, laptop, and personal computer are used to capture and display the monitored data.</p>
          <p>In [<xref ref-type="bibr" rid="ref22">22</xref>], mobile health apps are proposed as solutions for (1) overcoming personalized health service barriers; (2) providing opportune access to critical information on a patient’s health status; (3) avoiding duplication of exams, delays and errors in patient treatment.</p>
        </sec>
      </sec>
    </sec>
    <sec sec-type="methods">
      <title>Methods</title>
      <sec>
        <title>Main Research Goals</title>
        <p>Our main research goal is to demonstrate that the formulation of a software framework to generate IoT applications in the eHealth domain does effectively support RPM. The aim is to analyze the tradeoffs involved in the challenge of building a flexible and powerful tool to help deal with the constraints found in a medical care environment. This initial version is totally experimental; it has not been tested in real medical care environments. Regarding the long-term goals of the research, the aim is to apply this software framework in a real medical care environment to assess its effective use as well as adequacy in terms of regulatory approval.</p>
      </sec>
      <sec>
        <title>Methodology</title>
        <p>We decided to build an IoT framework to allow the characterization of the RPM domain by using framework design techniques that encompass software agents. Framework methodology was chosen to assess its suitability for the RPM domain and its potential to generate customized applications that achieve the stated goals of more closely connecting patients to their health care team. As a proof of the concept, 3 applications were developed with different implementations for each hot spot of the framework.</p>
        <p>An application named, Agents4Health was selected to illustrate the instantiation process and the IoT4Health framework operation. Furthermore, IoT devices were built from scratch to collect patient data for the Agents4Health application by using hardware prototypes comprised of biometric sensors and Internet-enabled microcontrollers to send the sensed data to the cloud automatically.</p>
        <p>To measure the ability of the tool to respond proactively to adverse conditions such as anomalies in patients’ vital signs, and its capacity to notify health providers in real time, the following step-by-step experiment was conducted:</p>
        <p>1. Five measurement points were identified in the Agents4Health’s workflow related to the tasks performed by agents and were labeled as Timestamps (T1 through T5) as follows:</p>
        <p>T1. The Agents4Health application retrieves the patient data from the cloud and the monitoring agent analyses them, searching for anomalies. If no anomaly is detected, the system remains in a loop collecting more data until an anomaly is found. Once an anomaly is detected the application continues to T2</p>
        <p>T2. This second step is reached when the monitoring agent detects an anomaly and then calls the notification agent.</p>
        <p>T3. The notification agent initiates the routine to notify the health care providers;</p>
        <p>T4. The notification agent sends information about the detected anomaly to the patient’s health care providers;</p>
        <p>T5. The health care providers receive the notification message on their mobile phones.</p>
        <p>2. Agents4Health is executed and the timestamps are measured and registered.</p>
        <p>3. Four delays defined as follows are captured for the different agent’s execution tasks:</p>
        <p>Detection anomaly interval (DAI)=T2−T1. The anomaly's detection delay in the monitoring routine.</p>
        <p>Notification start interval (NSI)=T3−T2. The delay between the anomaly detection and the initiation of the notification routine.</p>
        <p>Notification period (NP)=T4−T3. Duration of the notification routine by agents.</p>
        <p>Notification routine interval (NRI)=T5−T4. Time elapsed between the sending of the notification and its receipt by the health provider.</p>
        <p>These delays were calculated to serve as a concrete measure of how quickly and proactively the solution can respond to the environment, as well as to support the assertion that this system performs anomaly detection in real time.</p>
        <p>To confirm the fulfillment of the main research goal, the experiment described above was conducted and the relevant results have been tabulated in the Discussion section.</p>
      </sec>
    </sec>
    <sec sec-type="results">
      <title>Results</title>
      <sec>
        <title>IoT4Health Framework</title>
        <sec>
          <title>Domain Analysis</title>
          <p>In this step, problems that health professionals currently deal with in their patient monitoring routines are considered. As mentioned earlier in this paper, the decision was made to build a software framework instead of one or more apps. The choice to use framework design techniques was motivated by the fact that the construction of a more generic and complex system would provide a cost-benefit, in that frameworks can usually increase software development productivity and shorter time-to-market.</p>
          
        </sec>
      </sec>
      <sec>
        <title>IoT4Health Design</title>
        <p>Regarding the IoT4Health’s design, besides the hot and frozen spots that were modeled as UML diagrams, the following architecture was defined.</p>
      </sec>
      <sec>
        <title>IoT4Health Architecture</title>
        <p>The IoT4Health’s architecture is structured in 3 layers, each with well-defined functionality (<xref ref-type="fig" rid="figure3">Figure 3</xref>).</p>
        <fig id="figure3" position="float">
          <label>Figure 3</label>
          <caption>
            <p>The IoT4Health’s architecture with its three layers (L1-L3). Data Management Layer (L3) and Distribution Data Layer (L1) interact through the Data Communication Layer (L2). The IoT4Health’s frozen spots can be extended by hot spots.</p>
          </caption>
          <graphic xlink:href="medinform_v5i1e9_fig3.png" alt-version="no" mimetype="image" position="float" xlink:type="simple"/>
        </fig>
        <fig id="figure4" position="float">
          <label>Figure 4</label>
          <caption>
            <p>The Agents4Health’s architecture with its three layers (L1-L3). The Agents4Health application (L3) interacts with Parse (L1) through REST API (L2).</p>
          </caption>
          <graphic xlink:href="medinform_v5i1e9_fig4.png" alt-version="no" mimetype="image" position="float" xlink:type="simple"/>
        </fig>
        <sec>
          <title>L1: Data Distribution Layer</title>
          <p>This layer works as a remote database of a patient’s vital signs.</p>
        </sec>
        <sec>
          <title>L2: Data Communication Layer</title>
          <p>Through this layer, the L3 can communicate with the L1 layer’s remote database.</p>
        </sec>
        <sec>
          <title>L3: Data Management Layer</title>
          <p>The L3 Layer is responsible for the entire information management of the instantiated applications. It is composed of 10 modules with well-defined responsibilities. These modules are shown next, along with a description of their purpose and examples of how our framework can be extended by specific application code implemented in IoT4Health’s instances.</p>
          <sec>
            <title>Identification Module (M1)</title>
            <p>It should be implemented by IoT4Health’s instances to support the patient identification process. The IoT4Health’s architecture offers the possibility of customizing this process, allowing developers to use different strategies, including: (1) The use of a unique identification code, such as the patient’s ID Card; (2) utilization of RFID tags that can be inserted into objects like bracelets, cards, or other elements with radio-frequency identification capability; and (3) Biometry.</p>
          </sec>
          <sec>
            <title>Collection Module (M2)</title>
            <p>It provides the collection of both patient and his or her environment data. The collection process can be realized manually or automatically.</p>
          </sec>
          <sec>
            <title>Storage Module (M3)</title>
            <p>Its implementation lets the application store the vital collected data. Examples of storage strategies that can be developed as an extension of IoT4Health’s architecture are (1) Local storage, (2) Cached storage, and (3) Remote storage.</p>
          </sec>
          <sec>
            <title>Visualization Module (M4)</title>
            <p>It was designed to provide users with ways to visualize storage data. Developers can implement some visualization strategies, utilizing the Web or a mobile application.</p>
          </sec>
          <sec>
            <title>Recovery Module (M5)</title>
            <p>It is responsible for recovering patient data stored on the cloud-based platform.</p>
          </sec>
          <sec>
            <title>Monitoring Module (M6)</title>
            <p>It was designed to continuously monitor the sensed data through software agents. Agents evaluate if the sensed data are within normal ranges, thus monitoring them to find anomalous values (AV). These normal ranges are defined for each patient, accounting for age, gender, other individual patient conditions, and each sensor in use. The system has a mandatory configuration step for each patient that can easily be completed by an administrator filling out a form through a system interface. In this step, the following parameters are defined:</p>
            <p>1. Desired value range (DVR): They are the normal values collected from sensors; that is, values within an acceptable limit. They can correspond to an interval such as 36.0-36.6 for body temperature, for example. They should be defined for each sensor in use.</p>
            <p>2. AVs: They are values outside the DVR, which are associated with anomalies. Regarding the DVRs from the previous example, one could have 37.8 as an example for a temperature AV.</p>
            <p>3. Label of Anomaly: They are associated with the AVs and must also be defined for each sensor. Regarding data like temperature, it can be associated with the following anomalies: (1) Hyperthermia, for example, can be the label specified for anomalies associated with AVs higher than 36.6; (2) Hypothermia, to AVs lower than 36.0.</p>
            <p>As one can observe, each such anomaly will receive a meaningful label regarding the health care context, so that it makes sense to a domain specialist. The goal is to enable a health care provider to identify quickly what problem is occurring when the system has detected an anomaly.</p>
          </sec>
          <sec>
            <title>Anomalies Detection Module (M7)</title>
            <p>It is supported by the use of reactive agents. This entity triggers alerts to health providers when case anomalies are detected.</p>
          </sec>
          <sec>
            <title>Notification Module (M8)</title>
            <p>It offers the possibility of using different strategies to send alerts to the medical team, such as by short message service (SMS), email message, voice call, or by Bluetooth. This module also requires the configuration of some parameters, as follows:</p>
            <p>1. Health provider responsible for an anomaly: a health professional should be selected to deal with each anomaly described.</p>
            <p>2. Notification details: The type of message for each health care provider indicated previously should be specified (ie, SMS, email, voice call, or Bluetooth), along with the details such as email address or phone number.</p>
            <p>This module’s result is the communication process between agents. Agents that monitor patient data send a message to agents that send notifications when they detect an abnormality in the patient’s condition, based on the predefined anomaly settings already mentioned.</p>
          </sec>
          <sec>
            <title>Resource Negotiation Module (M9)</title>
            <p>It utilizes the concept of cognitive agents that, in this context, would be responsible for the use of argumentation techniques [<xref ref-type="bibr" rid="ref23">23</xref>] to achieve resource sharing in a collaborative way, by making its management more effective. An application could implement cognitive agents, responsible for adopting negotiation strategies, to obtain hospital resources for a particular patient.</p>
          </sec>
          <sec>
            <title>Dynamic Reconfiguration Module (M10)</title>
            <p>Its goal is to provide applications with context-sensitive capability so that these systems could be capable of responding to changes in the environment. A change of a patient’s room could affect the defined parameters for monitoring, anomaly detection, and notification modules, becoming inappropriate in the new context. In this case, the applications’ values must be reconfigured. This reconfiguration can be carried out manually by an administrator user or autonomously by cognitive agents.</p>
          </sec>
        </sec>
      </sec>
      <sec>
        <title>Frozen Spots and Hot Spots</title>
        <p>The IoT4Health contains 11 hot spots, offering developers the opportunity to create customized applications. Each one of these modules has extension points that broaden our framework’s architecture, as shown above in <xref ref-type="fig" rid="figure3">Figure 3</xref>.</p>
      </sec>
    </sec>
    <sec>
      <title>The Application Agents4Health as an Illustrative Instantiation of IoT4Health</title>
      <p>The Agents4Health application [<xref ref-type="bibr" rid="ref1">1</xref>] is an example of the IoT4Health’s instantiation process, which was developed to illustrate the generative power of our framework <xref ref-type="fig" rid="figure4">Figure 4</xref>. It consists of a multi-agent system that autonomously conducts monitoring and notifying tasks. To access the patient data sensed by real biometric sensors and remotely stored through Arduino, the Agents4Health communicates with the cloud via REST application programming interface (API).</p>
      <p>The Arduino integrated development environment (IDE) was used to implement the M2 and M3 modules of the Agents4Health in the C++ language. The other modules were created with the Java language. The software agents were programmed with the version 4.3.0 of the JADE tool [<xref ref-type="bibr" rid="ref24">24</xref>]. JADE is a free software distributed by Telecom Italia (the copyright holder), in open source under the terms and conditions of the second version of the Lesser General Public License (LGPL) license. It is a framework to develop agent systems in Java. It simplifies multi-agent systems’ implementation through Foundation for Intelligent, Physical Agents (FIPA)-compliant middleware [<xref ref-type="bibr" rid="ref25">25</xref>]. The JADE API offers 2 types of behavior classes that can be extended by agents: Primitive and Composite. The Agents4Health agents’ behavior was implemented using the Primitive behavior class. Each application agent is an extension of the <italic>Agent</italic> Class and has a corresponding behavior to <italic>Behavior’s</italic> extension class. The behavior of each of the system’s agents is defined by its setup method, where behavior was configured through the <italic>addBehavior</italic> method.</p>
      <p>The Agents4Health application’s reactive agents present 2 types of behavior: <italic>TickerBehavior</italic> and <italic>OneShotBehavior</italic>. <italic>TickerBehavior</italic> type behavior is executed cyclically. That is, agents in our scenario that must carry out continuous monitoring activities implement this behavior, as is the case of <italic>MonitoringSensorTemperatureDataAgent</italic> class. Other agents are responsible for executing tasks that are not realized in a predefined interval of time, occurring only on demand in response to a specific event. This is the case of <italic>NotificationBySMSAgent</italic>, which sends messages to the medical team.</p>
      
      <sec>
        <title>The Agents4Health Instance</title>
        <sec>
          <title>L1: Data Distribution Layer</title>
          <p>To provide the data distribution service to the application, a remote data storage service called Parse [<xref ref-type="bibr" rid="ref26">26</xref>] was utilized. However, because the Parse hosted service will be retired in early 2017, we are moving our database to another platform called MongoDB [<xref ref-type="bibr" rid="ref27">27</xref>].</p>
        </sec>
        <sec>
          <title>L2: Data Communication Layer</title>
          <p>The Agents4Health communicates with Parse (L1) through the REST API [<xref ref-type="bibr" rid="ref28">28</xref>]. The application sends and retrieves data to and from the cloud through HTTP requests.</p>
        </sec>
        <sec>
          <title>L3: Data Management Layer</title>
          <p>The data management layer comprises the IoT application, with its 8 modules (M1-M8) as follows:</p>
          <sec>
            <title>M1</title>
            <p>To identify a patient in the application, an RFID strategy has been chosen. We have used an RFID system that includes a tag and a reader. This process is performed through an RFID interface, where each patient receives a bracelet containing an RFID tag that will be used as a unique ID code in the system.</p>
          </sec>
          <sec>
            <title>M2</title>
            <p>In the Agents4Health application, both pulse and body temperatures are collected. This module may be extended to collect other patient data such as electroencephalography (EEG), EMG, as well as environment data such as light, noise levels, and data about the device such as battery status. This process, which is also called sensing, is performed automatically in Agents4Health. Arduino is used, together with sensors for heartbeat and temperature that form an IoT device capable of collecting patient data without human intervention (<xref ref-type="fig" rid="figure5">Figure 5</xref>).</p>
            <fig id="figure5" position="float">
              <label>Figure 5</label>
              <caption>
                <p>Our IoT device for patient monitoring that contains an Arduino microcontroller and biometric sensors (on the left), Pulse and Oxygen in Blood Sensor (SPO2) sensors and Body Temperature sensor (on the right).</p>
              </caption>
              <graphic xlink:href="medinform_v5i1e9_fig5.jpg" alt-version="no" mimetype="image" position="float" xlink:type="simple"/>
            </fig>
          </sec>
          <sec>
            <title>M3</title>
            <p>Once collected, the application transfers the patient’s data over the Internet to the Parse.</p>
          </sec>
          <sec>
            <title>M4</title>
            <p>The remote storage allows any authorized user to access the data by means of a user-friendly interface [<xref ref-type="bibr" rid="ref1">1</xref>], through any device (computer, mobile phone, or tablet).</p>
          </sec>
          <sec>
            <title>M5</title>
            <p>A Web application is provided to support the visualization of the patient data. In the current implementation, there is a line chart for each one of the sensors used and they are updated in real time (<xref ref-type="fig" rid="figure6">Figure 6</xref>).</p>
            <fig id="figure6" position="float">
              <label>Figure 6</label>
              <caption>
                <p>Example of the visualization module (on the left). Example of an action taken by the NotificationBySMSAgent agent (on the right).</p>
              </caption>
              <graphic xlink:href="medinform_v5i1e9_fig7.png" alt-version="no" mimetype="image" position="float" xlink:type="simple"/>
            </fig>
          </sec>
          <sec>
            <title>M6</title>
            <p>Following the IoT4Health’s protocol, in this step, an administrative user defines the DVR and the AV for each sensor.</p>
          </sec>
          <sec>
            <title>M7</title>
            <p>During this phase, a specific label for each anomaly is defined for each of the sensors: heartrate sensor (<xref ref-type="table" rid="table1">Table 1</xref>) and temperature sensor (<xref ref-type="table" rid="table2">Table 2</xref>).</p>
            
            
            <table-wrap position="float" id="table1">
              <label>Table 1</label>
              <caption>
                <p>Configuring an example for the anomaly detection module, considering cardiac heartbeat.</p>
              </caption>
              <table width="581" cellpadding="7" cellspacing="0" border="1" rules="groups" frame="hsides">
                <col width="200"/>
                <col width="400"/>
                <thead>
                  <tr valign="top">
                    <td>AV<sup>a</sup> for cardiac heartbeat</td>
                    <td>Kinds of associated types of anomalies</td>
                  </tr>
                </thead>
                <tbody>
                  <tr valign="top">
                    <td>Heartbeat values &#60;60</td>
                    <td>Bradyarrhythmias such as sinus bradycardia or atrioventricular block</td>
                  </tr>
                  <tr valign="top">
                    <td>Heartbeat values &#62;110</td>
                    <td>Tachyarrhythmias such as atrial fibrillation, supraventricular tachycardia, and ventricular tachycardia</td>
                  </tr>
                </tbody>
              </table>
              <table-wrap-foot>
                <fn id="table1fn1">
                  <p><sup>a</sup>AV: anomalous value.</p>
                </fn>
              </table-wrap-foot>
            </table-wrap>
            <table-wrap position="float" id="table2">
              <label>Table 2</label>
              <caption>
                <p>Configuring an example for the anomaly detection module considering temperature.</p>
              </caption>
              <table width="581" cellpadding="7" cellspacing="0" border="1" rules="groups" frame="hsides">
                <col width="200"/>
                <col width="400"/>
                <thead>
                  <tr valign="top">
                    <td>AV<sup>a</sup> for temperature</td>
                    <td>Kinds of associated types of anomalies</td>
                  </tr>
                </thead>
                <tbody>
                  <tr valign="top">
                    <td>Temperature values &#60;36</td>
                    <td>Hypothermia</td>
                  </tr>
                  <tr valign="top">
                    <td>Temperature values &#62;36.6</td>
                    <td>Hyperthermia</td>
                  </tr>
                </tbody>
              </table>
              <table-wrap-foot>
                <fn id="table2fn1">
                  <p><sup>a</sup>AV: anomalous value.</p>
                </fn>
              </table-wrap-foot>
            </table-wrap>
            
            <p>In Agents4Health, the criteria used by the reactive agents to detect anomalies are defined by the domain specialists and coded in the XML language. They will form the agents’ knowledge bases (<xref ref-type="fig" rid="figure7">Figure 7</xref>).</p>
            <p>To prevent the system from detecting false abnormalities and triggering false alarms caused by simple patient movements or exercising, 2 strategies are being developed: (1) filtering the sensed data by using information provided by its own sensors related to the signal quality; (2) adding the environment’s sensors to collect information about the context of the measurement. The former is performed when the sensors in use provide information about signal quality. Sensors such as the Mindwave Mobile Headset (NeuroSky) [<xref ref-type="bibr" rid="ref29">29</xref>] are used to collect EEG data to provide this type of information. In this particular case, if the sensor is not in contact with the skin or if there is some interference such as a strand of hair between the sensor and the skin, the signal quality will indicate this situation. In that case, the application can be configured to ignore the sensed data until the signal quality provides a reliable value. The latter is useful to make the AVs flexible, taking into consideration the context of the patient being monitored. To avoid mistakenly detecting a heartbeat anomaly, for example, when a patient is engaged in physical activity, we can use sensors such as an accelerometer to collect context information.</p>
            <p>M8: For Agents4Health, the choice was to send SMSs as a notification strategy, using the Twilio [<xref ref-type="bibr" rid="ref30">30</xref>] library. Twilio is a platform using API communication that offers Web-service APIs, allowing users to construct their own SMS communication applications.</p>
            
            
            
            <fig id="figure7" position="float">
              <label>Figure 7</label>
              <caption>
                <p>XML document that constitutes the agents’ knowledge base.</p>
              </caption>
              <graphic xlink:href="medinform_v5i1e9_fig6.png" alt-version="no" mimetype="image" position="float" xlink:type="simple"/>
            </fig>
          </sec>
        </sec>
      </sec>
    </sec>
    <sec sec-type="discussion">
      <title>Discussion</title>
      <sec>
        <title>Conclusions and Future Work</title>
        <p>The main objective of this paper was to report on the construction of the IoT4Health framework based on a requirements analysis of the RPM domain. This was accomplished by using framework design techniques and the introduction of software agents in the framework design to allow autonomic behavior [<xref ref-type="bibr" rid="ref31">31</xref>]. To deal with the aforementioned goal, experiments for the IoT4Health framework were created and tried.</p>
        <p>In a main application experiment, generating a complete instance of the framework validated IoT4Health. This experiment, called Agents4Health, made it possible to observe that its design contributed toward making the patient’s environment more proactive. Through this experimental system, it has also been possible to detect anomalies in real time and to send alerts instantly and autonomously to health providers. Thereby, professionals responsible for taking action in the case of abnormalities in a patient’s condition can immediately react to these events.</p>
        <p>As mentioned in the Methods section, <xref ref-type="table" rid="table3">Table 3</xref> offers the results of the experiment conducted to offer a more concrete way to indicate the performance of the simulated environment:</p>
        <table-wrap position="float" id="table3">
          <label>Table 3</label>
          <caption>
            <p>Examples of timestamps for agents’ behavior and task delays.</p>
          </caption>
          <table width="577" cellpadding="7" cellspacing="0" border="1" rules="groups" frame="hsides">
            <col width="70"/>
            <col width="78"/>
            <col width="80"/>
            <col width="81"/>
            <col width="71"/>
            <col width="29"/>
            <col width="28"/>
            <col width="26"/>
            <thead>
              <tr valign="top">
                <td>Timestamp T1</td>
                <td>Timestamp T2</td>
                <td>Timestamp T3</td>
                <td>Timestamp T4</td>
                <td>Timestamp T5</td>
                <td>DAI<sup>a</sup> (s)</td>
                <td>NSI<sup>b</sup> (s)</td>
                <td>NP<sup>c</sup> (s)</td>
              </tr>
            </thead>
            <tbody>
              <tr valign="top">
                <td>2016-11-04-173424</td>
                <td>2016-11-04-173427</td>
                <td>2016-11-04-173427</td>
                <td>2016-11-04-173428</td>
                <td>2016-11-04-1734</td>
                <td>3</td>
                <td>0</td>
                <td>1</td>
              </tr>
              <tr valign="top">
                <td>2016-11-04-173430</td>
                <td>2016-11-04-173434</td>
                <td>2016-11-04-173434</td>
                <td>2016-11-04-173436</td>
                <td>2016-11-04-1735</td>
                <td>4</td>
                <td>0</td>
                <td>2</td>
              </tr>
              <tr valign="top">
                <td>2016-11-04-173442</td>
                <td>2016-11-04-173445</td>
                <td>2016-11-04-173445</td>
                <td>2016-11-04-173448</td>
                <td>2016-11-04-1735</td>
                <td>3</td>
                <td>0</td>
                <td>3</td>
              </tr>
              <tr valign="top">
                <td>2016-11-04-173450</td>
                <td>2016-11-04-173454</td>
                <td>2016-11-04-173454</td>
                <td>2016-11-04-173455</td>
                <td>2016-11-04-1735</td>
                <td>4</td>
                <td>0</td>
                <td>1</td>
              </tr>
              <tr valign="top">
                <td>2016-11-04-173458</td>
                <td>2016-11-04-173501</td>
                <td>2016-11-04-173501</td>
                <td>2016-11-04-173502</td>
                <td>2016-11-04-1735</td>
                <td>3</td>
                <td>0</td>
                <td>1</td>
              </tr>
              <tr valign="top">
                <td>2016-11-04-173504</td>
                <td>2016-11-04-173507</td>
                <td>2016-11-04-173507</td>
                <td>2016-11-04-173509</td>
                <td>2016-11-04-1735</td>
                <td>3</td>
                <td>0</td>
                <td>2</td>
              </tr>
            </tbody>
          </table>
          <table-wrap-foot>
            <fn id="table3fn1">
              <p><sup>a</sup>DAI: detection anomaly interval.</p>
            </fn>
            <fn id="table3fn2">
              <p><sup>b</sup>NSI: notification start interval.</p>
            </fn>
            <fn id="table3fn3">
              <p><sup>c</sup>NP: notification period.</p>
            </fn>
          </table-wrap-foot>
        </table-wrap>
        <p>On average, the DAI for the Agents4Health experiment results is 3.5 s. The NSI presented zero delays for all results in this experiment. The NP averaged 1.75 s. And, finally, as mobile phones do not provide the SMS reception time with millisecond precision, there is only an approximate measurement for NRI, which was less than 1 min on average.</p>
        <p>We have been involved in a number of practical developments based on our framework. One consists of the use of Bluetooth for communication with the medical team in the absence of Internet access. The use of machine learning is also examined in the patient monitoring domain. This approach is performed by creating melanoma and mammography classifications as a black box accessible to the system agents. IoT4Health is also being used as the basis of a complex patient monitoring system under development in our laboratory [<xref ref-type="bibr" rid="ref32">32</xref>], with our participation and which has been named portable care.</p>
        <p>As future work, we are planning a rigorous formal characterization of the patient monitoring domain as well as the formal characterization of the family of applications reachable through the framework flexible points. The application of cognitive agents as elements of the software framework is also being considered.</p>
      </sec>
    </sec>
  </body>
  <back>
    <glossary>
      <title>Abbreviations</title>
      <def-list>
        <def-item>
          <term id="abb1">API</term>
          <def>
            <p>Application Programming Interface</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb2">AV</term>
          <def>
            <p>anomalous values</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb3">DAI</term>
          <def>
            <p>detection anomaly interval</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb4">DVR</term>
          <def>
            <p>desired value range</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb5">ECG</term>
          <def>
            <p>electrocardiography</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb6">EEG</term>
          <def>
            <p>electroencephalography</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb7">EMG</term>
          <def>
            <p>electromyography</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb8">FIPA</term>
          <def>
            <p>Foundation for Intelligent Physical Agents</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb9">HTTP</term>
          <def>
            <p>Hypertext Transfer Protocol</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb10">IDE</term>
          <def>
            <p>integrated development environment</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb11">IoT</term>
          <def>
            <p>Internet of Things</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb12">JADE</term>
          <def>
            <p>Java Agent Development Framework</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb13">NP</term>
          <def>
            <p>notification period</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb14">NRI</term>
          <def>
            <p>notification routine interval</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb15">NSI</term>
          <def>
            <p>notification start interval</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb16">RFID</term>
          <def>
            <p>radio-frequency identification</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb17">SMS</term>
          <def>
            <p>short message service</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb18">UML</term>
          <def>
            <p>Unified Modeling Language</p>
          </def>
        </def-item>
        <def-item>
          <term id="abb19">XML</term>
          <def>
            <p>eXtensible Markup Language</p>
          </def>
        </def-item>
      </def-list>
    </glossary>
    <ack>
      <p>This work was supported by grants from National Counsel of Technological and Scientific Development (CNPq).</p>
    </ack>
    <fn-group>
      <fn fn-type="conflict">
        <p>None declared.</p>
      </fn>
    </fn-group>
    <ref-list>
      <ref id="ref1">
        <label>1</label>
        <nlm-citation citation-type="confproc">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Fernandes</surname>
            <given-names>CO</given-names>
          </name>
          <name name-style="western">
            <surname>Lucena</surname>
            <given-names>CJP</given-names>
          </name>
        </person-group>
        <article-title>An Internet of Things Application with an Accessible Interface for Remote Monitoring Patients</article-title>
        <source>Design, User Experience, and Usability: Interactive Experience Design</source>  
        <year>2015</year>  
        <month>07</month>  
        <day>06</day>  
        <conf-name>HCI International 2015</conf-name>
        <conf-date>August 2-7, 2015</conf-date>
        <conf-loc>Los Angeles, CA, USA</conf-loc>
        <publisher-loc>Springer International Publishing Switzerland</publisher-loc>
        <publisher-name>Springer International Publishing</publisher-name>
        <fpage>651</fpage>  
        <lpage>661</lpage>  
        <comment>
          <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://doi.org/10.1007/978-3-319-20889-3_60"/>
        </comment>  
        <pub-id pub-id-type="doi">10.1007/978-3-319-20889-3_60</pub-id></nlm-citation>
      </ref>
      <ref id="ref2">
        <label>2</label>
        <nlm-citation citation-type="book">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Fernandes</surname>
            <given-names>CO</given-names>
          </name>
        </person-group>
        <person-group person-group-type="editor">
          <name name-style="western">
            <surname>Lucena</surname>
            <given-names>CJP</given-names>
          </name>
          <name name-style="western">
            <surname>Lucena</surname>
            <given-names>CAP</given-names>
          </name>
          <name name-style="western">
            <surname>Azevedo</surname>
            <given-names>BA</given-names>
          </name>
        </person-group>
        <article-title>Enabling a Smart and Distributed Communication Infrastructure in Healthcare</article-title>
        <source>Innovation in Medicine and Healthcare 2015</source>  
        <year>2015</year>  
        <month>08</month>  
        <day>12</day>  
        <publisher-loc>Springer International Publishing Switzerland</publisher-loc>
        <publisher-name>Springer International Publishing</publisher-name>
        <fpage>435</fpage>  
        <lpage>446</lpage> </nlm-citation>
      </ref>
      <ref id="ref3">
        <label>3</label>
        <nlm-citation citation-type="web">
        <source>RFIDjournal</source>  
        <year>2009</year>  
        <access-date>2016-08-22</access-date>
        <comment>That 'Internet of Things' Thing - In the real world, things matter more than ideas
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.rfidjournal.com/articles/view?4986">http://www.rfidjournal.com/articles/view?4986</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6jxDkcPuS"/></comment> </nlm-citation>
      </ref>
      <ref id="ref4">
        <label>4</label>
        <nlm-citation citation-type="book">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Finkenzeller</surname>
            <given-names>D</given-names>
          </name>
          <name name-style="western">
            <surname>Cox</surname>
            <given-names>MK</given-names>
          </name>
        </person-group>
        <source>RFID Handbook: Fundamentals and Applications in Contactless Smart Cards, Radio Frequency Identification and Near-Field Communication. Third edition</source>  
        <year>2010</year>  
        <month>06</month>  
        <day>14</day>  
        <publisher-loc>Hoboken, US</publisher-loc>
        <publisher-name>Wiley</publisher-name></nlm-citation>
      </ref>
      <ref id="ref5">
        <label>5</label>
        <nlm-citation citation-type="journal">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Atzori</surname>
            <given-names>L</given-names>
          </name>
          <name name-style="western">
            <surname>Iera</surname>
            <given-names>A</given-names>
          </name>
          <name name-style="western">
            <surname>Morabito</surname>
            <given-names>G</given-names>
          </name>
        </person-group>
        <article-title>The Internet of Things: a survey</article-title>
        <source>Computer Networks</source>  
        <year>2010</year>  
        <month>10</month>  
        <volume>54</volume>  
        <issue>15</issue>  
        <fpage>2787</fpage>  
        <lpage>2805</lpage>  
        <pub-id pub-id-type="doi">10.1016/j.comnet.2010.05.010</pub-id></nlm-citation>
      </ref>
      <ref id="ref6">
        <label>6</label>
        <nlm-citation citation-type="web">
        <source>Arduino</source>  
        <access-date>2016-08-21</access-date>
        <comment>
          <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://www.arduino.cc/">https://www.arduino.cc/</ext-link>
          <ext-link ext-link-type="webcite" xlink:href="6jwDCGjRi"/>
        </comment> </nlm-citation>
      </ref>
      <ref id="ref7">
        <label>7</label>
        <nlm-citation citation-type="web">
        <source>Arduino</source>  
        <access-date>2016-10-22</access-date>
        <comment>Arduino UNO &#38; Genuino UNO
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://www.arduino.cc/en/Main/ArduinoBoardUno">https://www.arduino.cc/en/Main/ArduinoBoardUno</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6lSEHmYSS"/></comment> </nlm-citation>
      </ref>
      <ref id="ref8">
        <label>8</label>
        <nlm-citation citation-type="web">
        <source>Arduino</source>  
        <access-date>2016-10-22</access-date>
        <comment>Arduino Yún Shield (USA Only) &#38; Genuino Yún Shield (Outside USA)
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://www.arduino.cc/en/Main/ArduinoYunShield">https://www.arduino.cc/en/Main/ArduinoYunShield</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6lSEaH2wB"/></comment> </nlm-citation>
      </ref>
      <ref id="ref9">
        <label>9</label>
        <nlm-citation citation-type="book">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Doukas</surname>
            <given-names>C</given-names>
          </name>
        </person-group>
        <source>Building Internet of Things with the Arduino (Volume 1)</source>  
        <year>2012</year>  
        <publisher-loc>USA</publisher-loc>
        <publisher-name>CreateSpace Independent Publishing Platform</publisher-name></nlm-citation>
      </ref>
      <ref id="ref10">
        <label>10</label>
        <nlm-citation citation-type="web">
        <source>Engadget</source>  
        <year>2015</year>  
        <access-date>2016-08-22</access-date>
        <comment>HealthPatch MD alerts your doctor about heart problems in real time
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://www.engadget.com/2015/01/06/healthpatch-md-vital-connect/">https://www.engadget.com/2015/01/06/healthpatch-md-vital-connect/</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6jxH7bcek"/></comment> </nlm-citation>
      </ref>
      <ref id="ref11">
        <label>11</label>
        <nlm-citation citation-type="web">
        <source>Cooking-hacks</source>  
        <access-date>2016-08-22</access-date>
        <comment>e-Health Sensor Platform V2.0 for Arduino and Raspberry Pi [Biometric / Medical Applications]
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://www.cooking-hacks.com/documentation/tutorials/ehealth-biometric-sensor-platform-arduino-raspberry-pi-medical">https://www.cooking-hacks.com/documentation/tutorials/ehealth-biometric-sensor-platform-arduino-raspberry-pi-medical</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6jxCIvFSO"/></comment> </nlm-citation>
      </ref>
      <ref id="ref12">
        <label>12</label>
        <nlm-citation citation-type="web">
        <source>Raspberrypi</source>  
        <access-date>2016-08-22</access-date>
        <comment>
          <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://www.raspberrypi.org/">https://www.raspberrypi.org/</ext-link>
          <ext-link ext-link-type="webcite" xlink:href="6jxI7NEyb"/>
        </comment> </nlm-citation>
      </ref>
      <ref id="ref13">
        <label>13</label>
        <nlm-citation citation-type="book">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Wooldridge</surname>
            <given-names>M</given-names>
          </name>
        </person-group>
        <article-title>Intelligent Agents</article-title>
        <source>Multi-agent Systems</source>  
        <year>1999</year>  
        <publisher-loc>Cambridge, MA</publisher-loc>
        <publisher-name>The MIT Press</publisher-name></nlm-citation>
      </ref>
      <ref id="ref14">
        <label>14</label>
        <nlm-citation citation-type="book">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Wooldridge</surname>
            <given-names>MJ</given-names>
          </name>
        </person-group>
        <source>An introduction to multiagent systems</source>  
        <year>2009</year>  
        <publisher-loc>Chichester, UK</publisher-loc>
        <publisher-name>John Wiley &#38; Sons</publisher-name></nlm-citation>
      </ref>
      <ref id="ref15">
        <label>15</label>
        <nlm-citation citation-type="book">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Russell</surname>
            <given-names>SJ</given-names>
          </name>
          <name name-style="western">
            <surname>Norvig</surname>
            <given-names>P</given-names>
          </name>
        </person-group>
        <source>Artificial intelligence: a modern approach</source>  
        <year>2010</year>  
        <publisher-loc>Upper Saddle River, NJ</publisher-loc>
        <publisher-name>Prentice Hall</publisher-name></nlm-citation>
      </ref>
      <ref id="ref16">
        <label>16</label>
        <nlm-citation citation-type="journal">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Markiewicz</surname>
            <given-names>M</given-names>
          </name>
          <name name-style="western">
            <surname>de Lucena</surname>
            <given-names>CJ</given-names>
          </name>
        </person-group>
        <article-title>Object oriented framework development</article-title>
        <source>Crossroads</source>  
        <year>2001</year>  
        <month>07</month>  
        <day>01</day>  
        <volume>7</volume>  
        <issue>4</issue>  
        <fpage>3</fpage>  
        <lpage>9</lpage>  
        <pub-id pub-id-type="doi">10.1145/372765.372771</pub-id></nlm-citation>
      </ref>
      <ref id="ref17">
        <label>17</label>
        <nlm-citation citation-type="web">
        <source>UML</source>  
        <access-date>2016-08-22</access-date>
        <comment>What is UML
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.uml.org/">http://www.uml.org/</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6jxJ32ugU"/></comment> </nlm-citation>
      </ref>
      <ref id="ref18">
        <label>18</label>
        <nlm-citation citation-type="book">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Gamma</surname>
            <given-names>E</given-names>
          </name>
          <name name-style="western">
            <surname>Helm</surname>
            <given-names>R</given-names>
          </name>
          <name name-style="western">
            <surname>Johnson</surname>
            <given-names>R</given-names>
          </name>
          <name name-style="western">
            <surname>Vlissides</surname>
            <given-names>J</given-names>
          </name>
        </person-group>
        <source>Design patterns: elements of reusable object-oriented software</source>  
        <year>1995</year>  
        <publisher-loc>Boston, MA</publisher-loc>
        <publisher-name>Addison-Wesley</publisher-name></nlm-citation>
      </ref>
      <ref id="ref19">
        <label>19</label>
        <nlm-citation citation-type="journal"> <person-group person-group-type="author"> <name name-style="western"> <surname>Su</surname> <given-names>CJ</given-names> </name> <name name-style="western"> <surname>Wu</surname> <given-names>C</given-names> </name> </person-group> <article-title>JADE implemented mobile multi-agent based, distributed information platform for pervasive health care monitoring</article-title> <source>Appl Soft Comput</source> <year>2011</year> <month>1</month> <volume>11</volume> <issue>1</issue> <fpage>315</fpage> <lpage>325</lpage> <pub-id pub-id-type="doi">10.1016/j.asoc.2009.11.022</pub-id> </nlm-citation>
      </ref>
      <ref id="ref20">
        <label>20</label>
        <nlm-citation citation-type="journal">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Weiser</surname>
            <given-names>M</given-names>
          </name>
        </person-group>
        <article-title>Some computer science issues in ubiquitous computing</article-title>
        <source>Commun ACM</source>  
        <year>1993</year>  
        <volume>36</volume>  
        <issue>7</issue>  
        <fpage>75</fpage>  
        <lpage>84</lpage>  
        <pub-id pub-id-type="doi">10.1145/159544.159617</pub-id></nlm-citation>
      </ref>
      <ref id="ref21">
        <label>21</label>
        <nlm-citation citation-type="journal"> <person-group person-group-type="author"> <name name-style="western"> <surname>Su</surname> <given-names>CJ</given-names> </name> <name name-style="western"> <surname>Chu</surname> <given-names>TW</given-names> </name> </person-group> <article-title>A mobile multi-agent information system for ubiquitous fetal monitoring</article-title> <source>Int J Environ Res Public Health</source> <year>2014</year> <month>01</month> <day>02</day> <volume>11</volume> <issue>1</issue> <fpage>600</fpage> <lpage>625</lpage> <comment><ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.mdpi.com/1660-4601/11/1/600/htm"/></comment> <pub-id pub-id-type="doi">10.3390/ijerph110100600</pub-id> </nlm-citation>
      </ref>
      <ref id="ref22">
        <label>22</label>
        <nlm-citation citation-type="journal">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Mohammadzadeh</surname>
            <given-names>N</given-names>
          </name>
          <name name-style="western">
            <surname>Safdari</surname>
            <given-names>R</given-names>
          </name>
        </person-group>
        <article-title>Patient monitoring in mobile health: opportunities and challenges</article-title>
        <source>Med Arch</source>  
        <year>2014</year>  
        <volume>68</volume>  
        <issue>1</issue>  
        <fpage>57</fpage>  
        <lpage>60</lpage>  
        <comment>
          <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://europepmc.org/abstract/MED/24783916"/>
        </comment>  
        <pub-id pub-id-type="medline">24783916</pub-id>
        <pub-id pub-id-type="pmcid">PMC4272470</pub-id></nlm-citation>
      </ref>
      <ref id="ref23">
        <label>23</label>
        <nlm-citation citation-type="confproc">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Laera</surname>
            <given-names>L</given-names>
          </name>
          <name name-style="western">
            <surname>Blacoe</surname>
            <given-names>I</given-names>
          </name>
          <name name-style="western">
            <surname>Tamma</surname>
            <given-names>V</given-names>
          </name>
          <name name-style="western">
            <surname>Payne</surname>
            <given-names>T</given-names>
          </name>
          <name name-style="western">
            <surname>Euzenat</surname>
            <given-names>J</given-names>
          </name>
          <name name-style="western">
            <surname>Bench-Capon</surname>
            <given-names>T</given-names>
          </name>
        </person-group>
        <article-title>Argumentation over ontology correspondences in MAS</article-title>
        <year>2007</year>  
        <month>05</month>  
        <day>14</day>  
        <conf-name>Aamas Conference 2007</conf-name>
        <conf-date>May 14 - 18, 2007</conf-date>
        <conf-loc>Honolulu, Hawaii</conf-loc>
        <fpage>228</fpage>  
        <pub-id pub-id-type="doi">10.1145/1329125.1329400</pub-id></nlm-citation>
      </ref>
      <ref id="ref24">
        <label>24</label>
        <nlm-citation citation-type="web">
        <source>Jade.tilab</source>  
        <access-date>2016-08-21</access-date>
        <comment>JAVA Agent DEvelopment Framework: an open source platform for peer-to-peer agent based applications
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://jade.tilab.com/">http://jade.tilab.com/</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6jwCwVQvX"/></comment> </nlm-citation>
      </ref>
      <ref id="ref25">
        <label>25</label>
        <nlm-citation citation-type="web">
        <source>FIPA</source>  
        <access-date>2016-08-22</access-date>
        <comment>FOUNDATION FOR INTELLIGENT PHYSICAL AGENTS
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.fipa.org/docs/wps/f-wp-00018/f-wp-00018.html">http://www.fipa.org/docs/wps/f-wp-00018/f-wp-00018.html</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6jxCpiSP5"/></comment> </nlm-citation>
      </ref>
      <ref id="ref26">
        <label>26</label>
        <nlm-citation citation-type="web">
        <source>Parse</source>  
        <access-date>2016-08-21</access-date>
        <comment>Open Source Hub
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://parse.com/">http://parse.com/</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6jwBcbFYW"/></comment> </nlm-citation>
      </ref>
      <ref id="ref27">
        <label>27</label>
        <nlm-citation citation-type="web">
        <source>Mongodb</source>  
        <access-date>2016-11-04</access-date>
        <comment>MongoDB Atlas: Hosted MongoDB-as-a-Service
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://www.mongodb.com/">https://www.mongodb.com/</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6ll1mFYUV"/></comment> </nlm-citation>
      </ref>
      <ref id="ref28">
        <label>28</label>
        <nlm-citation citation-type="web">
        <source>Parseplatform.github</source>  
        <access-date>2016-08-22</access-date>
        <comment>Parse
        <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://parseplatform.github.io/docs/rest/guide/">http://parseplatform.github.io/docs/rest/guide/</ext-link>
        <ext-link ext-link-type="webcite" xlink:href="6jxLgHHwW"/></comment> </nlm-citation>
      </ref>
      <ref id="ref29">
        <label>29</label>
        <nlm-citation citation-type="web">
        <source>Neurosky</source>  
        <access-date>2016-11-04</access-date>
        <comment>
          <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://neurosky.com/biosensors/eeg-sensor/biosensors/">http://neurosky.com/biosensors/eeg-sensor/biosensors/</ext-link>
          <ext-link ext-link-type="webcite" xlink:href="6lm37mphP"/>
        </comment> </nlm-citation>
      </ref>
      <ref id="ref30">
        <label>30</label>
        <nlm-citation citation-type="web">
        <source>Twilio</source>  
        <access-date>2016-08-21</access-date>
        <comment>
          <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://www.twilio.com/">https://www.twilio.com/</ext-link>
          <ext-link ext-link-type="webcite" xlink:href="6jwCh91Vd"/>
        </comment> </nlm-citation>
      </ref>
      <ref id="ref31">
        <label>31</label>
        <nlm-citation citation-type="confproc">
        <person-group person-group-type="author">
          <name name-style="western">
            <surname>Nunes</surname>
            <given-names>IO</given-names>
          </name>
          <name name-style="western">
            <surname>Kulesza</surname>
            <given-names>U</given-names>
          </name>
          <name name-style="western">
            <surname>Nunes</surname>
            <given-names>C</given-names>
          </name>
          <name name-style="western">
            <surname>Cirilo</surname>
            <given-names>E</given-names>
          </name>
          <name name-style="western">
            <surname>Lucena</surname>
            <given-names>C</given-names>
          </name>
        </person-group>
        <article-title>Extending web-based applications to incorporate autonomous behavior</article-title>
        <year>2008</year>  
        <conf-name>14th Brazilian Symposium on Multimedia and the Web (WebMedia '08)</conf-name>
        <conf-date>October 26 - 29, 2008</conf-date>
        <conf-loc>Vila Velha, Brazil</conf-loc>
        <publisher-loc>New York, NY, USA</publisher-loc>
        <publisher-name>ACM</publisher-name>
        <fpage>115</fpage>  
        <lpage>122</lpage>  
        <comment>
          <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://dl.acm.org/citation.cfm?doid=1666091.1666112"/>
        </comment>  
        <pub-id pub-id-type="doi">10.1145/1666091.1666112</pub-id></nlm-citation>
      </ref>
      <ref id="ref32">
        <label>32</label>
        <nlm-citation citation-type="web">
        <source>LES</source>  
        <year>2016</year>  
        <access-date>2016-08-22</access-date>
        <comment>
          <ext-link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.les.inf.puc-rio.br/wiki/index.php/P%C3%A1gina_principal">http://www.les.inf.puc-rio.br/wiki/index.php/P%C3%A1gina_principal</ext-link>
          <ext-link ext-link-type="webcite" xlink:href="6jxZarAkW"/>
        </comment> </nlm-citation>
      </ref>
    </ref-list>
  </back>
</article>
