使用Dragonboard 410c开发医疗物联网

需求分析

随着社会事业的发展,医疗行业对各种仪器的需求越来越大,如生化仪,心电监护仪,呼吸机等等,这些设备目前使用两种通信方式和lis/pacs/中心监护系统接口

  • 大多数采用串口作为数据接口,使用ASTM作为通信协议
  • 使用以太网网络接口,以HL7作为通信协议

协议解释

HL7标准

HL7标准是建立在ISO标准组织之制定的OSI模型的最高层的应用标准,如下图所示:
这里写图片描述

HL7标准包含256个事件、116个消息类型,139个段,55种数据类型,408个数据字典,涉及79种编码系统。但在应用HL7标准时,并不一定需要涉及标准全部内容,可以选择自己需要应用的相关事件、消息类型和段就可以了。而在数据字典和编码系统方面HL7标准并没有进行强制的规定,可以允许用户选择。标准的内容作为推荐。由于HL7涉及非常广泛,且在开发过程中广泛接纳了最终用户、开发商、研究机构的各方面的意见,从另一个方面也可以将HL7标准理解为医学信息中的其他编码标准的一个总纲性质的索引。

ASTM标准

ASTM的全称是American Society for Testing and Materials,美国材料与试验协会。它规定十几个类别,用途非常广泛,包含以下门类:

1、钢铁产品
2、有色金属产品
3、金属试验和分析方法。
4、建筑
5、石油与化工
6、染料和涂料
7、纺织
8、塑料
9、橡胶
10、电气与电子工业
11、水和环保技术
12、核能、太阳能与地热能
13、医疗器械和服务
14、通用方法和仪器。
15、通用产品和专用化学品

医疗行业用的是第13类 ,比如ASTM E1394 等等

现状

传统医院系统都是使用PC作为仪器服务器来接入的,体积大,价格贵,功耗也大,而且很不灵活,不同的仪器要不同的接口程序,这些接口程序使用Powerbuilder,delphi,C#编写,每次不同仪器参数和协议接口都需要重新编译部署实施调试,成本高,工期长。

用Dragonboard 410c的方案

有鉴于此,我们决定采用Dragonboard代替PC来实现各种仪器接入,使用nodejs开发,带来的好处是明显的,价格远低于pc,而且灵活 不需要编译,而且nodejs本身在www.npmjs.org上提供了海量的模块库,其中就包括HL7的解析库,使用nodejs可以极大的降低开发工作难度,动态配置js脚本就可以对接相应的仪器,因此可以远程配置调试仪器,节省昂贵的差旅费。

开始动手

安装os

先下载img文件,这里我们选择debian,大家可以直接去linaro的网站下载
dragonboard410c_sdcard_install_debian-36.zip这个文件,不过这个网站经常断线,为了大家操作方便我就下载了并且共享了:Debian的img文件
把tf卡通过usb读卡器插入电脑,推荐使用class 10 的tf卡,8G以上。
使用sdformatter 格式化卡
这里写图片描述
然后使用win32diskimager把镜像烧录到tf卡。
把tf卡插入板子,启动 ,并把跳线位置设成如下模式
这里写图片描述
根据屏幕提示,选择intall ,然后等待几分钟 系统就安装好了,这时候去掉TF卡
这里写图片描述
(如果不去掉TF卡,下次启动还是从TF卡启动,或者你可以设置跳线,选择从EMMC启动,我为了图省事就拔掉了TF卡)重新启动
显示linaro登陆界面
密码和用户名都是linaro

为了以后操作方便,使用passwd建立root账号
用root登陆,然后在操作指令 就不需要输入烦人的sudo了

安装nodejs

因为410c板子我已经装好了nodejs 我在另外一个板子上演示一下nodejs的安装过程

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

如果发现没有curl 可以用apt-get install curl 安装
这里写图片描述
安装完nodejs 运行node -v 就可以看到已经装好

安装相应的模块

因为我们做的医疗网关需要支持HL7和ASTM协议,因此需要安装相应的node-serialport和hl7模块

使用npm直接安装 npm install node-serialport
npm install hl7 因为每种仪器只会选择其中之一,因此我们装在不同的工作目录
这里写图片描述

测试串口和ASTM协议

本来打算直接连接我们的ASTM仿真器的,但是Dragonboard 410c的IO是1.8v的,我怕直接接上我们设备的3.3v TTL 会烧掉,所以决定使用USB口转出来的串口解决这个问题
我们使用一个MICO开发板作为串口输入源,插入开发板在/dev/ 下可以看到一个设备ttyUSB1,编写一个测试程序lis.js

var SerialPort = require("serialport").SerialPort,


    sp = new SerialPort("/dev/ttyUSB1", {
        baudrate: 115200
    }, false); // this is the openImmediately flag [default is true]



sp.open(function (error) {
    if (error) {
        console.log('failed to open: ' + error);
        return;

    } else {
        console.log('open');
    }
});

sp.on('data', function (data) {
    console.log(data.toString());
    //sp.write("hello/r/n");
});

这里写图片描述
说明串口可以正常工作,实际接入我们的仪器通信程序也可以通信的
测试HL7功能,在drgonboard 安装hl7测试包

npm install simple-hl7

然后进去到node_modules/simple-hl7/examples,可以看到有4个例子,我们运行tcp-server这个

node tcp-server.js

这里写图片描述
然后在pc上运行hl7模拟器
这里写图片描述
可以看到模拟器模拟发送的HL7 结果已经被龙版上运行的hl7 server接受到
稍微修改这个hl7 程序,把hl7转成json ,转换功能都是这个hl7包里面提供的,就可以直接保存到rest界面的数据库后端
实际模拟,使用我们自己的仪器数据和模拟器 ,真实连接我们自己的模拟器,数据保存到couchdb

总结

可以看到数据被完整的保存进去了,使用nodejs 也可以方便的通过webhdfs等模块把iot数据保存进hadoop 或者通过其他相关的模块把心电监护数据保存到openTSDB或者infuxdb 等等,而这些代码加起来也不过千行,而且可以运行在嵌入式ARM板如龙板上,这是传统医疗软件开发手段如PB,C#,JAVA都很难做到的。
接下来我还会尝试octoprint控制3d打印等项目,本次测试dragonboard还有一个很重要的事,是希望能拿到dragonboard配套的那个HDMI转CSI的板子,很遗憾一直没有机会测试这个,这个可以用于超声内镜的采集,代替昂贵的采集工作站和笨重的采集卡。
接下来我还会尝试octoprint控制3d打印等项目,本次测试dragonboard还有一个很重要的事,是希望能拿到dragonboard配套的那个HDMI转CSI的板子,很遗憾一直没有机会测试这个,这个可以用于超声内镜的采集,代替昂贵的采集工作站和笨重的采集卡。

javaee 6 规范 chm版本 第1章 引言 1.1 感谢 1.2 版本1.3的感谢 1.3 版本1.4的感谢 1.4 版本5的感谢 1.5 版本6的感谢 第2章 平台概述 2.1 体系结构 2.2 Profile(自定义规范) 2.3 应用程序组件 2.4 容器 2.5 资源适配器 2.6 数据库 2.7 Java EE标准服务 2.8 互用性 2.9 产品标准的灵活性 2.10 Java EE产品的扩展 2.11 平台角色 2.12 平台协议 2.13 J2EE 1.3中的变化 2.14 J2EE 1.4中的变化 2.15 Java EE 5中的变化 第3章 安全 3.1 简介 3.2 一个简单的例子 3.3 安全体系结构 3.4 用户验证的必要条件 3.5 授权条件 3.6 部署标准 3.7 未来的方向 第4章 事务管理 4.1 概述 4.2 标准 4.3 事务的互用性 4.4 本地事务优化 4.5连接共享 4.6 JDBC和JMS部署问题 4.7 双相提交支持 4.8 系统管理工具 第5章 资源,命名和注入 5.1 概述 5.2 JNDI命名上下文环境 5.3 Java EE平台角色的职责 5.4 简单环境入口 5.5 Enterprise JavaBeansTM 5.6 Web服务的引用 5.7 资源管理器连接工厂的引用 5.8 资源环境的引用 5.9 消息目的地的引用 5.10 用户事务的引用 5.11 事务同步注册表的引用 5.12 ORB的引用 5.13 引用持久化单元 5.14 持久化上下文的引用 5.15 应用程序名称和模块名称 5.16 检验器和检验器工厂的引用 5.17 数据源资源定义 5.18 引用受管理的Bean 5.19 Bean管理器的引用 5.20 支持依赖注入(JSR-330) 第6章 应用程序编程接口 6.1 必须的API 6.2 Java平台Java SE标准 6.3企业级JavaBeansTM 3.1标准 6.4 Servlet 3.0标准 6.5 JavaServer PagesTM标准 6.6 Expression Language标准 6.7 JavaTM Message Service 6.8 JavaTM Transaction API 6.9 JavaMailTM 1.4标准 6.10 Java 连接器体系结构标准 6.11 Java EE Web服务1.3标准 6.12 JAX-RPC 1.1标准 6.13 JAX-WS 2.2 标准 6.14 JAX-RS 1.1标准 6.15 JAXB 2.2 标准 6.16 JAXR 1.0 标准 6.17 API 1.1标准 6.18 API 1.2 标准 6.19 JACC 1.4 标准 6.20 JASPIC 1.0 标准 6.21 JSR-45 标准 6.22 SJSTL 1.2 标准 6.23 Web Services 2.1 标准 6.24 JavaServer 2.0 标准 6.25 Java平台公共注解1.1标准 6.26 Persistence API 2.0 6.27 Bean Validation 1.0 6.28 Managed Beans 1.0 标准 6.29 Interceptors 1.1 标准 6.30 Contexts Dependency 6.31 Dependency Injection 第7章 互用性 7.1 互用性介绍 7.2 互用性协议 第8章 应用程序组装者和部署 8.1 应用程序部署的生命周期 8.2 库的支持 8.3 类加载标准 8.4 应用程序组装 8.5 部署 8.6 应用程序的XML Schema 8.7 Java EE XML Schema定义 第9章 Profile 9.1 简介 9.2 定义Profile 9.3 Profile的总体原则 9.4 标准的扩展 9.5 所有Java EE Profile标准 9.6 Java EE Profile可选特性 9.7 完整的Java EE产品标准 第10章 应用程序客户端 10.1 概述 10.2 安全 10.3 事务 10.4 资源,命名和注入 10.5 应用程序编程接口 10.6 打包和部署 10.7 程序客户端的XML Schema 第11章 服务供应商接 11.1 JavaTM EE连接器体系结构 11.2 容器Java服务提供方协议 11.3 JavaTM事务API 11.4 JavaTM持久化 11.5 XML Web服务提供的API 11.6 JavaMailTM 第12章 兼容性和迁移 12.1 兼容性 12.1 迁移 第13章 未来的方向 13.1 JNLP(Java Web Start) 13.2 Java EE SPI 附录 附录A 早期版本的部署描述符 附录B 修订历史 科瑞网酷
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值