啟用Dragonboard 410c開發(fā)醫(yī)療業(yè)物聯(lián)網(wǎng)
需求分析
隨著社會(huì)事業(yè)的發(fā)展,醫(yī)療行業(yè)對(duì)各種儀器的需求越來越大,如生化儀,心電監(jiān)護(hù)儀,呼吸機(jī)等等,這些設(shè)備目前使用兩種通信方式和lis/pacs/中心監(jiān)護(hù)系統(tǒng)接口
本文引用地址:http://cafeforensic.com/article/201710/365526.htm- 大多數(shù)采用串口作為數(shù)據(jù)接口,使用ASTM作為通信協(xié)議
- 使用以太網(wǎng)網(wǎng)絡(luò)接口,以HL7作為通信協(xié)議
協(xié)議解釋
HL7
HL7標(biāo)準(zhǔn)是建立在ISO標(biāo)準(zhǔn)組織之制定的OSI模型的最高層的應(yīng)用標(biāo)準(zhǔn),如下圖所示:
HL7標(biāo)準(zhǔn)包含256個(gè)事件、116個(gè)消息類型,139個(gè)段,55種數(shù)據(jù)類型,408個(gè)數(shù)據(jù)字典,涉及79種編碼系統(tǒng)。但在應(yīng)用HL7標(biāo)準(zhǔn)時(shí),并不一定需要涉及標(biāo)準(zhǔn)全部內(nèi)容,可以選擇自己需要應(yīng)用的相關(guān)事件、消息類型和段就可以了。而在數(shù)據(jù)字典和編碼系統(tǒng)方面HL7標(biāo)準(zhǔn)并沒有進(jìn)行強(qiáng)制的規(guī)定,可以允許用戶選擇。標(biāo)準(zhǔn)的內(nèi)容作為推薦。由于HL7涉及非常廣泛,且在開發(fā)過程中廣泛接納了最終用戶、開發(fā)商、研究機(jī)構(gòu)的各方面的意見,從另一個(gè)方面也可以將HL7標(biāo)準(zhǔn)理解為醫(yī)學(xué)信息中的其他編碼標(biāo)準(zhǔn)的一個(gè)總綱性質(zhì)的索引。
ASTM
ASTM的全稱是American Society for TesTIng and Materials,美國材料與試驗(yàn)協(xié)會(huì)。它規(guī)定十幾個(gè)類別,用途非常廣泛,包含以下門類:
1、鋼鐵產(chǎn)品
2、有色金屬產(chǎn)品
3、金屬試驗(yàn)和分析方法。
4、建筑
5、石油與化工
6、染料和涂料
7、紡織
8、塑料
9、橡膠
10、電氣與電子工業(yè)
11、水和環(huán)保技術(shù)
12、核能、太陽能與地?zé)崮?/p>
13、醫(yī)療器械和服務(wù)
14、通用方法和儀器。
15、通用產(chǎn)品和專用化學(xué)品
醫(yī)療行業(yè)用的是第13類 ,比如
ASTM E1394 等等
目前現(xiàn)狀
傳統(tǒng)醫(yī)院系統(tǒng)都是使用PC作為儀器服務(wù)器來接入的,體積大,價(jià)格貴,功耗也大,而且很不靈活,不同的儀器要不同的接口程序,這些接口程序使用Powerbuilder,delphi,C#編寫,每次不同儀器參數(shù)和協(xié)議接口都需要重新編譯部署實(shí)施調(diào)試,成本高,工期長。
用Dragonboard 410c的方案
有鑒于此,我們決定采用Dragonboard代替PC來實(shí)現(xiàn)各種儀器接入,使用nodejs開發(fā),帶來的好處是明顯的,價(jià)格遠(yuǎn)低于pc,而且靈活 不需要編譯,而且nodejs本身在www.npmjs.org上提供了海量的模塊庫,其中就包括HL7的解析庫,使用nodejs可以極大的降低開發(fā)工作難度,動(dòng)態(tài)配置js腳本就可以對(duì)接相應(yīng)的儀器,因此可以遠(yuǎn)程配置調(diào)試儀器,節(jié)省昂貴的差旅費(fèi)。
410c的外觀很小巧,用來代替龐大的pc ,會(huì)給醫(yī)院節(jié)省開支,而且未來 410c可以集成到儀器里面,成為儀器的一部分。
開始動(dòng)手
首先安裝
先下載img文件,這里我們選擇debian,大家可以直接去linaro的網(wǎng)站下載
dragonboard410c_sdcard_install_debian-36.zip這個(gè)文件,不過這個(gè)網(wǎng)站經(jīng)常斷線,為了大家操作方便我就下載了并且共享了
http://pan.baidu.com/s/1migYRiC
把tf卡通過usb讀卡器插入電腦,推薦使用class 10 的tf卡,8G以上。
使用sdformatter 格式化卡
然后使用win32diskimager把鏡像燒錄到tf卡。
把tf卡插入板子,啟動(dòng) ,并把跳線位置設(shè)成如下模式
根據(jù)屏幕提示,選擇intall ,然后等待幾分鐘 系統(tǒng)就安裝好了,這時(shí)候去掉TF卡
(如果不去掉TF卡,下次啟動(dòng)還是從TF卡啟動(dòng),或者你可以設(shè)置跳線,選擇從EMMC啟動(dòng),我為了圖省事就拔掉了TF卡)重新啟動(dòng)
顯示linaro登陸界面
密碼和用戶名都是linaro
為了以后操作方便,使用passwd建立root賬號(hào)
用root登陸,然后在操作指令 就不需要輸入煩人的sudo了
安裝nodejs
因?yàn)?10c板子我已經(jīng)裝好了nodejs 我在另外一個(gè)板子上演示一下nodejs的安裝過程
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
如果發(fā)現(xiàn)沒有curl 可以用apt-get install curl 安裝
安裝完nodejs 運(yùn)行node -v 就可以看到已經(jīng)裝好
安裝相應(yīng)的模塊
因?yàn)槲覀冏龅尼t(yī)療網(wǎng)關(guān)需要支持HL7和ASTM協(xié)議,因此需要安裝相應(yīng)的模塊
node-serialport和hl7模塊
使用npm直接安裝 npm install node-serialport
npm install hl7 因?yàn)槊糠N儀器只會(huì)選擇其中之一,因此我們裝在不同的工作目錄
測試串口和ASTM協(xié)議
本來打算直接連接我們的ASTM仿真器的,但是Dragonboard 410c的IO是1.8v的,我怕直接接上我們?cè)O(shè)備的3.3v TTL 會(huì)燒掉,所以決定使用USB口轉(zhuǎn)出來的串口解決這個(gè)問題。
我們使用一個(gè)MICO開發(fā)板作為串口輸入源,通過一個(gè)USB HUB接入410c主板。
在/dev/ 下可以看到一個(gè)設(shè)備ttyUSB1,編寫一個(gè)測試程序lis.js
var SerialPort = require(“serialport”).SerialPort,
sp = new SerialPort(“/dev/ttyUSB1”, {
baudrate: 115200
}, false);
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”);
});
說明串口可以正常工作,實(shí)際接入我們的儀器通信程序也可以通信的
測試HL7
接下來我們測試HL7功能,在drgonboard 安裝hl7測試包
npm install simple-hl7
然后進(jìn)去到node_modules/simple-hl7/examples,可以看到有4個(gè)例子,我們運(yùn)行tcp-server這個(gè)
node tcp-server.js
然后在pc上運(yùn)行hl7模擬器
可以看到模擬器模擬發(fā)送的HL7 結(jié)果已經(jīng)被龍版上運(yùn)行的hl7 server接受到
稍微修改這個(gè)hl7 程序,把hl7轉(zhuǎn)成json ,轉(zhuǎn)換功能都是這個(gè)hl7包里面提供的,就可以直接保存到rest界面的數(shù)據(jù)庫后端。
實(shí)際模擬
使用我們自己的儀器數(shù)據(jù)和模擬器 ,真實(shí)連接我們自己的模擬器,數(shù)據(jù)保存到couchdb
可以看到數(shù)據(jù)被完整的保存進(jìn)去了,使用nodejs 也可以方便的通過webhdfs等模塊把iot數(shù)據(jù)保存進(jìn)Hadoop 或者通過其他相關(guān)的模塊把心電監(jiān)護(hù)數(shù)據(jù)保存到openTSDB或者infuxdb 等等,而這些代碼加起來也不過千行,而且可以運(yùn)行在嵌入式ARM板如龍板上,這是傳統(tǒng)醫(yī)療軟件開發(fā)手段如PB,C#,Java都很難做到的。
接下來我還會(huì)嘗試octoprint控制3d打印等項(xiàng)目,本次測試dragonboard還有一個(gè)很重要的事,是希望能拿到dragonboard配套的那個(gè)HDMI轉(zhuǎn)CSI的板子,很遺憾一直沒有機(jī)會(huì)測試這個(gè),這個(gè)可以用于超聲內(nèi)鏡的采集,代替昂貴的采集工作站和笨重的采集卡。
接下來我還會(huì)嘗試octoprint控制3d打印等項(xiàng)目,本次測試dragonboard還有一個(gè)很重要的事,是希望能拿到dragonboard配套的那個(gè)HDMI轉(zhuǎn)CSI的板子,很遺憾一直沒有機(jī)會(huì)測試這個(gè),這個(gè)可以用于超聲內(nèi)鏡的采集,代替昂貴的采集工作站和笨重的采集卡。
后記
這次測試準(zhǔn)備的很不充分,1.8v的IO我沒有準(zhǔn)備好,本來可以直接使用低速插座的UART接口來對(duì)接串口設(shè)備的,另外也可以使用Python開發(fā),效果也很好,一樣可以在pc和arm板上移植,也可以支持串口也有HL7的庫。
評(píng)論