文摘
与指数改善软件技术在过去的十年中,许多已经努力设计远程和个性化医疗应用程序。许多这样的应用程序是建立在移动设备连接到云。虽然很有吸引力,然而,原型开发和验证一个应用级的想法的可行性还挑战没有一个坚实的理解云,移动,和基础设施互联互通。在本文中,我们提出了一个框架提供了一个解决这个叫做HealthNode,这是一个通用的框架,开发医疗应用程序在云平台上使用node . js。充分利用节点的潜力。js开发云应用程序时,我们关注的实现过程应该放松。HealthNode提供了明确的指导同时支持必要的特性来实现快速和可扩展的基于云的医疗应用。案例研究将HealthNode应用于各种现实世界的健康应用程序表明HealthNode能有效地表达建筑结构在一个实现该平台可以支持系统理解和软件进化。
1。介绍
促进物联网(物联网)应用程序使得各种数据点收集的大量异构设备聚集在单个存储库的应用程序开发。当然,这些系统的分布式特性集中在云基础设施的支持下实现新颖的应用程序设计综合数据处理和有效的资源管理。
特别是医药相关物联网应用程序开发,它不仅保留了个人的安全与健康,还可以提高医生提供治疗。使用智能和移动设备、医疗物联网可以为用户提供有价值的数据,减少医患互动的需要直接。
尽管他们的吸引力,然而,实现这样的基于云的应用程序是不以任何方式简单。特别是大量非技术人员在医疗保健领域。在健康和物联网领域正在彻底改变了融合,设计一个有效的云应用程序要求研究人员知道各种技术领域从服务器操作,本地和web应用程序的语言,数据通信协议。例如,对于高效的web开发,开发人员通常需要五个不同编程语言的知识,如JavaScript、HTML、CSS,服务器端语言,比如PHP和SQL。
为克服这些挑战,最近推出了软件平台称为节点。js (1)已获得大量的开发者社区的牵引。具体来说,节点。js是一个可伸缩的单线程的服务器端JavaScript环境在C和c++中实现(2]。开发人员可以构建可伸缩服务器不使用线程,而是通过使用一个简化的事件驱动的编程模型,它使用回调信号的完成一个任务(3]。由于它的简单性,行业领导者如微软(4IBM [],5],Netflix [6],贝宝[7)和沃尔玛(8)集成节点的支持。js云平台。尽管近期的事态发展,节点。js开发web应用程序的方法使它一个有吸引力的替代传统的平台如Apache + PHP和Nginx服务器。
使用节点的诸多好处之一。js是其体系结构,使它容易使用作为一个表达,函数式语言服务器端编程(9]。尽管它可能是微不足道的节点进行发展。js开发人员充分理解语言,有许多障碍之前,能够实现真正的基于云的应用程序对于初学者来说。例如,节点。js需要多个初始化步骤,如HTTP的配置方案和路线。js,指导路由请求的位置。由于框架相对年轻和软件未达到成熟,开发人员仍然面临缺乏文档的支持和可能面临的麻烦在收到开发社区的支持。
我们所知,尚未有一个节点。js软件设计或实现指导文档,开发人员创建结构良好的医疗保健应用程序的影响。然而,对于软件开发人员来说,这一事实与固体边界组织程序设计在实际部署成功是至关重要的。设计一个特别的模型将刺激逻辑的复杂性,导致难以维护和更新应用程序。此外,没有坚固的指导文档,需要大量的时间和不必要的努力甚至配置主应用程序开发环境。
在本文中,我们提出一个实用的解决方案来实现基于云计算的医疗保健应用程序称为HealthNode通过提供一个框架,包括(1)一个软件设计和(2)基本api和实现原型设计指南。我们特别强调在医疗应用程序而不是其他类型的应用程序,因为节点。js是能够支持复杂的需求,医疗应用程序问,需要支持多个医患关系、医疗数据交换与一个统一的语言和数据格式,并允许发达医疗组件的可重用性。然而,我们将为我们的未来努力扩大HealthNode适用于其他应用程序。
为了简化节点的使用。js,我们的软件设计可以帮助开发人员轻松观察数据流,创建模块,和添加功能即使没有详细描述,哪个节点。js缺乏。我们使用自顶向下方法,结构软件设计模块的层次结构和divide-and-concur方法,为每个模块组织任务。自顶向下方法能够帮助开发人员观察应用程序流从主模块,它充当主类在Java中,其他子以自上而下的方式。它本质上是应用程序开发的分解洞察其组成子模块。divide-and-concur方法将每个模块分解成子,为每个模块指定目标任务。这种策略还允许多个开发人员同时工作在应用程序的不同部分。
指导开发基于云计算的医疗保健应用程序使用节点。js,我们提供api和一个准则,构造骨骼中的基本组件实现。我们主要关注服务器的后端,其中包含核心业务功能。我们的设想是,HealthNode开发基于云计算的医疗保健应用程序的整体影响。
这项工作可以归纳为三个方面的贡献:(我)软件设计,解决了维护和更新的挑战云开发的应用程序使用node . js。这个设计布局将支持生成的应用程序包含定义良好的、独立的组件,带来更好的可维护性。此外,新功能可以被添加到应用程序没有重大改变底层架构。(2)api和实现提供明确的指导方针,但简单的指令开发通用节点。js原型。这条指导原则指导如何(1)创建原型通过使用一组有限的api,(2)模块划分和组织功能,(3)允许客户端和服务器交流,(4)利用云应用程序数据库,和(5)处理上传和下载文件。通过这条指导原则,开发人员可以专注于应用程序逻辑实现。(3)医疗应用程序打开的可能性的例子医疗开发的新结构。我们的软件设计和指导可以开发各种基于云的医疗保健应用程序的基础。我们提供的示例系统,可以使我们的工作。
节2,我们将讨论一些使用node . js实现云应用的技术挑战。我们引入了节点的总体结构。js建筑、图书馆、模块和功能节点。js应用程序,以及HealthNode的软件设计部分3。节4,我们提出我们的指南,指导开发基于云计算的医疗保健应用程序的实现过程并介绍一些潜在的应用,我们的工作可以应用在部分5。最后,我们的位置我们的工作等6和总结的论文部分7。
2。挑战
从技术上讲,开发一个基于云的医疗保健应用程序使用节点。js,有许多材料在线和离线用户容易开始构建软件环境。然而,根据我们的经验,这些教程大多仍在初学者的水平层面上,由于其相对较新的生命周期,它是相当难以识别执行更高级的任务所需的信息。此外,实际问题,通常出现在这个发展阶段包括(1)缺乏正式的软件结构,(2)基本指导方针对于高级功能实现,和(3)真正的应用程序示例。我们使用这一节的其余部分,讨论这种支持的重要性和应用程序开发人员可能面临的挑战,由于这样的限制。
2.1。可用性
有一个活跃的社区,支持node . js。更多的开发人员看节点的存储库。js在GitHub比其他最近热门的软件环境。然而,节点。js是相对较新的比传统web应用程序框架,比如ASP.NET。因此,很自然地,这些旧框架相比,节点。js缺乏文档和示例如何结构的整体实现。由于少量的浅显易懂的指导方针,节点。js不常用其全部功能,开发者可以创建数据交换应用程序连接物联网应用等基础设施。理想的应用程序应该允许客户提交数据到服务器,服务器响应回客户充分利用云计算的力量。
2.2。可行性
供初学者使用节点。js实现一个完全功能的原型,它需要大量的时间和精力下建立了基本的应用程序环境,正确路线传入和传出的信息,整个应用程序的结构和格式。理想情况下,催化各种云应用程序的发展,这个过程应该易于理解和实现。
2.3。可维护性和可扩展性
在设计使用节点云应用程序的后端。js,现有教程往往促进示例只使用单个模块包含所有可能的功能,无论系统设计。使用单个模块限制了任务分发给其他模块,因此减少了设计一个组织实现的优点。尽管节点。js支持建立多个模块的层次结构,特别计划的软件构建层次结构级别可以导致不同模块之间的逻辑不固体边界的复杂性增加。此外,有效地维护和更新应用程序,适当的文档是至关重要的。然而,记录在一个模块或多个ad hoc计划模块可以添加额外的负担,代码审查过程。支持这些问题,一个组织结构的软件设计模块不仅可以帮助开发者在设计他们的软件,还在维护他们的应用程序中受益。此外,这些存储库的模块可以最终受益的应用更方便地扩展。
3所示。体系结构
这部分首先描述了节点的总体结构。js建筑、图书馆、模块和函数构成一个典型的节点。js应用程序。然后我们现在HealthNode设计采用自顶向下的方法和各个击破的策略,都是软件开发的本质。
3.1。背景
3.1.1。架构描述的node . js
以基于事件的执行模型,节点。js平台体系结构使用一个线程来执行应用程序代码简化应用程序开发。然而,沉重的计算和阻塞I / O调用,在事件线程执行防止应用程序处理其他请求。节点。js解决这个问题通过事件循环和异步I / O是轻量级的数据密集型,实时应用程序(10]。的节点。js执行模型是不同的线程执行模型在每个客户端连接都是由一个单独的线程处理。总的来说,平台必须坐标数据输入和输出的适应性和可靠地在一个不同范围的分布式系统。
3.1.2。的node . js库和模块
节点。js提供了一个API覆盖底层网络,基本的HTTP服务器功能,文件系统操作,压缩,和许多其他常见的任务。此外,节点的可用的外部库。js可以添加更多的功能模块形式。模块是由公共或私人包注册。根据CommonJS包格式的包结构,可以安装包管理器的节点(NPM) [11]。
我们的图书馆软件设计作品的表达,这是其中的一个节点。js的包支持节点的快速发展。js云应用程序(12]。它有助于建立仿真中间件响应HTTP请求,指定一个路由表用于实现各种行动基于HTTP方法和URL,并允许根据传递的参数模板动态HTML页面。除了公共图书馆,当地模块也可以通过文件路径或引用的名称。除非模块是主要的模块,一个模块所引用的名称将映射到一个文件路径。
3.1.3。node . js的函数
在程序设计中,一个函数被定义为部分的代码执行一个特定任务和一系列的语句。它有能力接受数据通过参数在一定的任务,并返回一个结果。在节点。js,需要额外的函数实现路由请求。支持路由的缓解,表达包允许创建中间件功能的能力。中间件函数允许在一行设置一个路由路径。此外,中间件功能只能通过客户和不访问端计算功能。例如,当一个客户端提交和向服务器请求数据,触发一个中间件的功能和输出返回给客户端。用于访问数据,通过共享中间件功能只访问数据对象或一个图书馆如MongoDB。
3.2。HealthNode
我们现在细节构成HealthNode两个软件设计过程。自顶向下方法有助于开发人员和分离模块之上而分治方法指导开发人员将任务划分为简单的模块,使多个模块同时发展。我们使用自顶向下方法,然后在后者的分而治之的策略的第一步首先,模块之间的角色之前定义的任务分配给每个角色。虽然这些技术都是常用的其他类型的web服务器和应用发展,我们所知,没有一个基本支持节点的软件设计。js实现结构。
3.2.1之上。自顶向下方法
自顶向下和自底向上的方法在软件开发中扮演着重要角色。自顶向下的方法是一个标准的遗传模式分解系统来洞察子系统。每个子系统都是那么精致但更详细直到整个规范是在许多其他子系统的水平降低到基本元素。这一过程持续进行直到最低水平的系统自顶向下的层次结构。在自底向上方法中,系统的基本元素是第一个指定。这些元素连接在一起形成更大的子系统,直到一个完整的顶层系统构造。使用自底向上的方法可能是有益的早期测试实现一级系统。然而,自底向上的方法并不适合特别为我们的软件设计由于其允许空间增长的需求。因为我们的研究着重于原型,这需要一个持续的更新,它必须容易添加和几个模块。然而,自底向上的策略不允许这样,随着时间的推移,组织和维护可能存在的问题。
HealthNode的软件设计,层次结构创建一个模块,它支持数据流之间的联系。图1可视化如何HealthNode地图自顶向下的角度从主模块和子模块进行初始化。每个子模块也可以有多个孩子子与外部包。在主模块,比如数据库初始化共享组件,和必要的子是耦合的。
自顶向下的方法是有效的,当应用程序概念清晰,系统设计是实现前做好充分的准备。查看图1自顶向下设计专注于设计垂直层次水平和使用夫妻连接数据流。耦合过程期间当模块补充道。这个过程完成后可以使用测试子模块时,连接到一个更高的模块。此外,该耦合过程可用于共享子子。情况已经实现孩子子模块所需的其他子模块,每个子可以几个preimplemented孩子子模块,以避免冗余。在实现,模块间的耦合是用来创建一个弱连接。换句话说,子模块中只允许使用一个孩子子模块一次实现。解耦过程可以很容易地完成由于疲软的所有模块之间的联系。
解耦过程支持维护和扩展应用程序。当一个特定的子模块的扩张,在这种情况下有两种不同的任务,子模块需要分解。分解一个模块,高子之间的解耦过程关闭连接到当前模块。这将导致解耦过程停止允许更高的模块使用当前的子模块。总的来说,耦合和分离过程完成初始化和删除模块和子模块之间的联系。
3.2.2。分而治之
分而治之是一个递归的概念,把系统分解成两个或多个子系统,直到这些变得简单直接标记。然后综合子系统的输出提供一个输出最高的系统。
各个击破的方法是不同于自顶向下的方法在某种意义上,自顶向下的方法定义层次结构的水平,而各个击破的方法侧重于横向分任务在每个级别指定的任务。模块级别越高,应用程序设计使用任务特征划分模块。模块级别越低,专注于更高的功能模块设计的基本要求。此外,在HealthNode的软件设计、各个击破的过程也可以减少冗余模块划分成组织的可重用和独特的面向任务的功能。以来的一个功能或中间件功能模块使用子越高,内分治技术可以很容易地应用使用一个或两行代码。
4所示。实现
在本节中,我们提出的实现组件HealthNode和循序渐进的指导方针,指导开发节点的实现过程。js云应用程序使用该框架。图2显示了一个一般从用户客户端应用程序执行流程,然后从客户端到服务器。我们关注的核心组件位于后端服务器和通信组件,用于客户端和服务器之间。请注意,我们不考虑服务器的前端的细节,因为有许多现有的前端框架的例子(13- - - - - -15]。
在HealthNode,提出实现准则遵循五个基本步骤:(1)模块之间的层次结构设置。(2)一个函数放在每个模块用于计算。(3)中间件功能添加到功能,与客户直接沟通。(4)在初始化过程中主要的模块,数据库信息配置为使用整个实现过程。(5)客户端通信程序测试做准备。
具体来说,我们描述的层次结构的实现细节后端,操作在模块和客户端和服务器之间的通信过程使用下面的详细。我们将使用代码片段在HealthNode目前使用概念的实现。
4.1。层次结构
在主模块,所有必要的库应用程序开发所需进口在初始化阶段。随着示例实现线在清单1到101节目,表达图书馆,随着支持库,首先导入到构建一个应用程序的层次结构以及使大部分的HTTP公用事业。MongoDB图书馆然后进口用于创建一个后端服务器和数据库之间的连接。
主模块和子模块连接通过耦合过程对20和21清单行作为例证1。通常需要使用共享库参数耦合过程。耦合过程允许客户端访问子模块的方法。自顶向下方法后,虽然传统的节点。js应用程序允许在主模块方法,HealthNode推荐方法在子避免专门设计的复杂性。在主模块功能会导致文档和维护问题由于其有限的角色初始化的核心任务。相比之下,子可以在孩子夫妇和呼叫功能子模块对25到30清单行所示1。在孩子子模块调用函数时,参数信息可以通过获得必要的信息。所有的模块都加上只有一两行代码,它允许一个简单的解耦过程在需要的时候扩展应用程序。这个过程是第一原则的“分而治之”的过程。
|
4.2。模块
如图3所示,每个子包含初始化模块和功能,包括图书馆在当前子模块使用。注意,每个函数包含多个中间件功能。对功能模块的一部分,它要求每个函数通过清单导出为插图2(1 - 5行)。一个中间件功能是必需的,当客户端需要对服务器进行通信。模块包含一个函数没有中间件功能通常位于最低的孩子子模块,除非它需要帮助孩子子从较低的水平。换句话说,如果函数只用于后端计算和由更高的子模块,调用这个函数可以通过调用函数名如“ChildSubModuleFunction”清单2对17 - 22行显示。该函数可以进一步处理计算任务接收到的数据通过一个函数参数。每个子模块都需要至少一个函数,它可能只是一个计算任务或都计算任务和中间件的功能。
|
4.3。中间件的功能
如清单3所示,一个中间件功能可以添加到一个函数。每个中间件功能包含请求和响应参数。请求和响应是一个基本的操作和关键功能使客户端和服务器之间的通信。当客户需要的信息,一个移动应用程序或web浏览器发送一个请求消息发送到服务器。请求消息的形式发送一个查询字符串。在请求消息处理的主体请求主要是使用。然后打开消息通过使用“stringfy”从“参数”库API函数。拆封后查询,消息被翻译成一个对象的值。一个对象的值用于执行任务或计算。执行任务,中间件功能还可以通过其他模块调用函数提供了处理后端计算任务。除了后台计算,外部可执行文件,如编译的机器学习算法,也可以使用“child_process”库执行行1在清单8所示4。此外,10到20行清单4显示的一个例子从NPM使用“串口”库,以便开发板使串行通信可以控制的写命令和输出数据。此外,请求可用于接收文件级数据。通过使用“fs”库,传入的文件处理和保存到特定位置(参见清单。26到35行4)。
每一个请求客户的回答在服务器上使用响应。具体地说,响应返回消息的作用,形式的JavaScript对象表示法(JSON)消息。在JSON消息、异构信息可以存储为一个对象。在对象中,有一组<字段名、数据>对,可以有一个对象或一个对象数组。这些对象可以放置在JSON消息交换。一旦JSON消息为客户准备必要的信息,信息发送回客户机通过写函数给出清单5。上传文件可以从客户端通过访问“fs”库中的41 - 49行清单所示4。
|
|
|
4.4。数据库
提供或存储信息,数据库也很重要。我们特意选择了支持HealthNode MongoDB。与MySQL, MongoDB使用动态模式,这意味着可以创建记录,如果没有一个结构(16]。在MongoDB中,三个基本(重要)操作插入,找到,删除。来访问数据库,“MongoDB”库初始化主模块与子和共享。任何数据库操作之前,建立连接使用连接功能以及数据库服务器的URL和端口号。与建立联系,查询字符串信息可以插入、删除或用于发现数据显示一个示例清单6。更新数据库中的文档,取而代之的是使用的文档删除和插入命令。
|
4.5。客户端
从客户端与服务器通信也是一个重要的操作。对于移动应用程序,通常情况下,客户端和服务器之间的通信是通过使用web浏览器或HTTP库。web浏览器的客户端获取或发送信息通过使用POST操作与查询字符串。具体来说,字符串的web浏览器使用JavaScript来嵌入信息查询和发布到服务器的请求。后发送请求,一个响应从服务器返回给客户端以JSON消息格式。提出了清单7,JSON消息解析成可读的对象和客户机web浏览器访问的。在移动应用程序中,专为机器人,Apache HTTP库是用来模拟web浏览器。移动应用程序的POST操作工作同样的web浏览器。
|
4.6。HealthNode API
设计API集,我们收集了一般要求从多个医疗和家庭监控项目(以前作品17,18HealthNode API)和实施必要的方法。API使用和扩展了表达库,允许开发者添加必要的方法遵循传统的表达实现规则(12]。我们包括一个图书馆为Android手机和浏览器应用程序与HealthNode通信服务器应用程序。移动和web应用程序API支持JSON将消息发送和文件在服务器上通过访问中间件的功能。HealthNode api可以安装使用NPM安装命令。启动服务器和导入基本的库,如“MongoDB”和“f”已经由简单的导入管理API。除了前面提到的库api还使用现有的“串口”图书馆与外部通信发展委员会等外部连接Arduino或覆盆子π。
4.7。安全
的安全数据交换服务器和客户机之间可以使用传输层安全(TLS),它是一个著名的协议,它提供了隐私和数据的完整性。按照表达API在TLS, HealthNode可以提高数据交换期间的安全。此外,病人健康信息是密码保护的隐私。当开发人员实现了数据交换过程中,登录功能前需要使用从服务器请求数据。例如,Android应用程序或web浏览器客户机可以从服务器请求数据获取登录后批准。
5。案例成果评价
有各种类型的基于云的医疗保健应用程序可以利用HealthNode的软件设计和实现的指导方针。这样的例子包括应用程序简单地通过网络日志信息到云,移动设备之间的医疗或医疗信息交换,通过本地网络或执行物理组件驱动。一般来说,HealthNode支持开发云应用程序的基本要求。这些需求包括发送/接收数据,构建一个数据库来存储信息,调用外部可执行文件的机器学习算法,并确保应用程序扩展的空间。
在本节中,我们评估HealthNode通过提供可能的应用场景如何使用我们的软件设计和实现指南为不同的移动云应用程序开发。注意案例研究受益于HealthNode后由于框架(1)直观的设计策略,帮助外部字段成员理解系统设计和提高医疗系统的特征,(2)包含一套实用的医疗与应用程序相关的方法,允许开发人员使用或改变给定的功能完整的基于云的医疗应用程序实现,和(3)允许这些应用程序与外部通信传感系统。
5.1。案例研究:AsthmaGuide
评估HealthNode的设计和框架,我们用我们之前的作品之一,AsthmaGuide [17),作为一个案例研究。AsthmaGuide是哮喘病人的监测系统的智能手机作为中心收集室内和室外环境信息和生理数据。专门为室内环境中,我们使用Sensordrone [19)来测量病人的信息环境如温度、湿度和空气质量。对于户外环境数据,我们使用一个国家数据库收集信息的空气质量,花粉计数,和哮喘指数。此外,我们收集病人通过收集他们的肺生理数据听起来使用电子听诊器,和现在的问卷调查,患者填写手工Android应用程序。收集的数据然后显示随着时间的推移,通过云web应用程序对于病人和卫生保健提供者视图。
利用HealthNode, AsthmaGuide首先收集需求,因此,每个需求被放置到指定的角色与自顶向下方法的“分而治之”的方法,分配工作,如图4。的需求直接与中间件功能每个需求负责客户端和服务器之间交换数据。
图4还显示的列表26中间件实现AsthmaGuide所需的函数。这些中间件功能提供必要的结果返回给web浏览器或移动设备而接受传入的数据来自客户。每个中间件功能映射到HealthNode设计模式相应的字母字母分类。所有中间件功能预先构建的HealthNode,可通过导入HealthNode库。图书馆实现遵循HealthNode设计模式和开发人员可以参考实现,以及添加中间件功能来增强他们的应用程序。
例如,当一个病人需要上传他或她的室内和室外环境数据收集以及生理数据到服务器,中间件功能,比如“Patientlogin”,“PatientRetrieveZipCode”,“PatientRetrieveCountryCode”,“PatientInsertData”,“FileUploadImageFile”,“FileUploadWaveFile”,“ClassifyLungSound,”和“GeneratePatientAdvice”。注意,“ClassifyLungSound”和“GeneratePatientAdvice”AsthmaGuide特定于应用程序的功能。在移动或web应用程序实现,AsthmaGuide开发人员调用所需的中间件功能要求和插入数据到服务器。除了这些简单的数据上传操作,AsthmaGuide需要更多的方法在系统启动时病人和卫生保健提供者之间交换信息。因此,HealthNode可以帮助减少开发人员的负担,缓解开发复杂性的过程中实现和维护云应用。
5.2。案例研究:智能家居自动化框架
另一个案例研究中,我们应用HealthNode系统被称为智能家居自动化框架(井)18]。物联网覆盖了各种网络的物理对象嵌入了驱动和传感单元。在引擎盖下,设备之间的通信是通过多个网络连接协议。的一个领域,利用物联网家庭自动化。家庭自动化使用不同类型的网络协议,如wi - fi,蓝牙,无线个域网。然而,现有的家庭设备通常需要网络communication-enabled电源插头或设备,一个独特的制造商指定的通信协议。虽然这些类型的设备通常遵循一个标准的通信能力,每个设备是有限的,只有在同一个网络协议进行通信。井的目的是解决问题,可以提高由于这样的限制。
具体来说,井目标提供和维护患者的舒适和健康的生活环境。例如,周围的温度是一个重要的指标对于那些敏感冷或热温度等慢性病患者,考虑到极端温度(比正常)各种症状会加重。图5展示了一个例子,井监测和驱动的智能家居使用HealthNode框架。我们用树莓π与无线个域网智能中央服务器和无线个域网的Arduino传感器节点。对井无线个域网沟通,多次反射通信支持更大的房子。服务器接受传入的JSON,客户机可以查询请求传感器读数或操作一个驱动单元。虽然我们目前的客户端应用程序实现在Android和Windows智能手机,任何编程语言能够支持JSON消息请求可以与智能家居中央服务器通信。
井的服务器应该有能力处理要求或多个中间件功能,比如“AddSensor”,“RemoveSensor”,“RefersehSensorReadings”,“ActuateSensor”,“AutonomusMode,”和“LearnHomeUsage, HealthyLivingEnvironmentMode。“尽管中间件功能的数量并不大,使用HealthNode允许软件维护更容易,因为它指示特定于任务的子而不是一个大的模块。在维护期间,夫妇和将子模块的开发人员通过改变一个或两行代码。具体来说,我们使用HealthNode的软件设计,结构井的体系结构,包含三个子模块(例如,病人、照顾者和传感器管理器)。其次是体系结构中,多个中间件功能实现。例如,病人和照顾者子从移动或web浏览器访问使用JSON消息请求。当有一个请求,一个中间件的函数返回结果给客户端数据库操作。服务器还记录最新的传感和驱动值通过使用“串口”库和中间件功能的传感器管理子模块。此外,存储的数据可以被一个孩子子模块在使用机器学习算法自动环境配置基于用户的偏好。注意所有中间件功能的预构建成HealthNode和可通过导入HealthNode库。
6。相关工作
现有的节点。js应用程序分布在各领域的研究,包括物联网或web (20.- - - - - -25)、医疗(26,27)、运输(28)和环境(29日域。开发一个结构良好的应用程序使用节点。js,释放30.)提出了一种克服许多挑战教学web开发通过将节点。js的计算机科学课程。他提出了一个学期,尽早课程大纲让学生完全理解节点的使用。js和web开发可以应用它。尽管节点。js很容易利用标准技术相比,节点。js仍然需要强大的背景之前,可以使用它的全部能力。理解节点。js开发只是一个表面水平将导致应用程序保持简单和更容易维护应用程序错误和困难。一项由Ojamaa和Duuna [31日)表示,与节点错误更常见。js应用程序因为程序员编写JavaScript应用程序的缺乏丰富的经验。
已经进行了很多尝试解决这个问题。有现有的书(9,32- - - - - -38)和在线教程(39,40使用node . js)进入的深度。尽管这些来源提供广泛的指导方针,没有一个简单的软件设计,允许开发人员得到一个完整的节点。js编程结构的通用应用程序的原型。
7所示。结论
医疗应用程序正在以指数速度出现,和应用程序系统的远程医疗应用领域正在成为物联网研究的关键领域。作为节点。js成为本次会议的重要工具,开发基于云的应用程序,我们建议HealthNode,这是一个通用的框架,开发医疗应用程序在云平台上使用node . js。HealthNode的主要目标是提供明确的软件设计,API,和指导方针来实现快速和可扩展的基于云的医疗保健应用程序。我们专门为医疗应用程序由于裁缝HealthNode很大潜力应对许多挑战提供方便,节省成本,而且方便的医疗保健。开发支持系统,如HealthNode,我们设想mobile-connected应用程序系统的发展将不可避免地增加在卫生保健领域。
数据可用性
使用的数据来支持本研究的发现可以从相应的作者。
的利益冲突
作者宣称没有利益冲突。
确认
这部分工作是支持DGIST研发项目的科学,ICT和未来规划(18-EE-01)全球研究实验室计划通过韩国国家研究基金会(NRF)由科技部,ICT和未来规划(NRF - 2013 k1a1a2a02078326) DGIST研发计划(CPS全球中心)项目“识别未满足的需求对未来可穿戴设备在设计自主临床事件检测应用程序”,和中国贸易、工业和能源和吉通过国际合作研发项目(没有。N0002099;Eurostars-2项目SecureIoT)。
补充材料
我们已经包括了NPM安装辅助开发人员可以安装使用node . js库并执行开发人员的应用程序。补充文件夹还包含Android和Web客户端源代码上传数据和从服务器获得结果。(补充材料)