《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于有源RFID的智能導醫系統
基于有源RFID的智能導醫系統
來源:電子技術應用2011年第8期
蔣 君,李偉鵬
(南方醫科大學 生物醫學工程學院,廣東 廣州510515)
摘要: 介紹一種結合了有源RFID技術、嵌入式系統和數據庫技術的智能導醫系統。該系統能夠在越來越復雜的醫院環境中為病人提供就醫導引信息。優化了患者的就醫體驗,提高了醫院各科室的工作效率和協作化程度。
中圖分類號: TP319.3
文獻標識碼: B
文章編號: 0258-7998(2011)08-0039-04
Intelligent medical navigation system based on active RFID
Jiang Jun,Li Weipeng
School of Biomedical Engineering , Southern Medical University, Guangzhou 510515,China
Abstract: This paper presents an intelligent medical navigation system,which integrates active RFID, embedded systems and database technology. Since hospitals are becoming increasingly complex, patients often lost their way when they are in hospital. This system provides an effective way to release medical guidance information for patients. It optimizes the patient's medical experience, and improves efficiency and collaboration between hospital's various departments.
Key words : medical navigation;embedded SQL;active RFID;QT programming


    隨著醫院規模的逐漸擴大,醫院的建筑結構越來越復雜。本文介紹的患者就醫導引系統,以嵌入式SQL和有源RFID技術為基礎,能夠在患者就醫的整個過程中提供就醫路線的導引,使患者就醫的體驗更人性化,同時可以提高醫生工作效率和各科室的協作化程度。現階段綜合性醫院普遍使用的分診叫號系統[1-2]只能對科室內部的就診患者進行分流。
    智能導醫系統由導醫終端(圖1中終端控制核心、RFID閱讀器和LCD顯示器三部分)、局域網、服務器三部分組成。導醫終端配置若干個,分別安放于醫院走廊、過道、電梯、樓梯間等位置。整個系統的示意圖如圖1所示。

    構建導醫系統的關鍵在于導醫終端的搭建和服務器上數據庫的建立,而系統的網絡則可以依靠醫院原有的有線或無線局域網。就醫導引系統(以下簡稱導醫系統)的基本工作原理如下:
 病人掛號時領取一張有源射頻卡(閱讀距離大于1 m),該卡周期性發射病人ID號。掛號的過程中,將病人ID號與所要就診的科室等信息在數據庫中進行關聯。當病人行進到導醫終端附近時,連接在導醫終端的射頻卡閱讀器將接收到病人ID號。導醫終端依據接收到的ID號發起數據庫檢索,檢索出病人掛號時建立的數據庫表項,如就診科室等相關信息。最后,綜合檢索到的信息將就醫導引信息顯示在LCD屏幕上。
1 硬件平臺構建
    導醫系統終端硬件平臺包括四個主要部分:終端控制核心、RFID閱讀器、LCD顯示模塊和電源。其硬件框圖如圖2所示。

 

 

    終端控制核心采用廣州友善之臂的mini6410開發板,處理器內核為ARM11。該處理器性能強勁,能處理較低分辨率的視頻。如果每個導醫系統終端控制核心都用PC機實現,雖然能夠換取更高的性能,但意味著每個終端的制作成本將大大增加。這將導致醫院的運作成本和患者就醫成本增加。
    導醫終端采用臺式PC用的普通17英寸LCD作為顯示器,屏幕較大,用戶體驗良好。由于終端的控制核心只有并行的LCD數據線,所以需要LCD轉VGA模塊將視頻信號轉成VGA接口模式。這個模塊采用的是友善之臂提供的方案。
    RFID閱讀器模塊和病人攜帶的RFID標簽是自行設計的一套有源RFID系統,閱讀距離1 m~5 m可調。有源RFID閱讀器與導醫系統終端控制核心采用UART串口連接。
    另外,直流電源采用普通的5 V開關電源。USB接口可以在單獨調試每個導醫終端上的程序時,外接USB鍵盤或鼠標。RJ45是外接網線的物理接口,每個終端通過這個接口獲取患者的完整信息。目前市面上也有很多USB接口的無線網卡,也可以無線局域網的形式將導醫終端連接到局域網。如果采用USB無線網卡的方式,則需要通過USB Hub來擴充核心控制板上的USB接口,并移植相應的驅動。
2 軟件平臺構建
    導醫終端的硬件平臺建立后需要構建運行于其上的軟件平臺,作為上層應用程序運行的基礎。由于導醫終端采用ARM-Linux嵌入式系統設計,除了OEM廠商提供的軟件包外,很多其他要用到的庫都需要自己修改或移植[3-4]。
2.1 數據庫訪問
    應用程序訪問數據庫的方式如圖3所示。在ARM硬件平臺、Linux操作系統下也不例外。

    本文介紹的導醫系統的數據庫是用Microsoft SQL Server建立的。SQL Server(及SyBase)使用TDS(Tabular_
Data_Stream)作為其數據庫現客戶端傳輸的協議,它對應于圖中的ODBC驅動。Linux下有此協議的免費版——freetds,將其移植到ARMLinux平臺作為訪問SQL Server的ODBC驅動。ODBC可以移植unixODBC和QT自帶的ODBC庫。
2.2 ODBC庫及其驅動移植
    系統中帶有相應的ODBC驅動和ODBC庫文件,是以ODBC方式在嵌入式系統中訪問SQL數據庫的必需條件。這些庫和驅動可以通過下載相應軟件包,經過交叉編譯并拷貝到ARM-Linux平臺相應目錄來實現移植。而在交叉編譯之前必須對其進行重新配置,否則無法生成合適的庫或驅動。
2.2.1 unixODBC-2.2.12的交叉編譯(arm體系)
    配置選項如下:(--prefix選項指定把編譯好的包釋放到什么地方)
    ./configure --host=arm-linux --prefix=/usr/local/arm/unixODBC-arm-iconv-2.2.12 --disable-gui --enable-iconv --enable-static
然后make & make install。
    另外還要編譯一個x86體系的unixODBC-2.2.12,因為交叉編譯freetds-0.82時要用到。
2.2.2 unixODBC-2.2.12的x86體系編譯
    配置選項如下:(與上面不同的是去掉了--host=arm-linux 選項)
    ./configure --prefix=/usr/local/arm/unixODBC-x86-2.2.12 --disable-gui --disable-iconv --enable-static
    然后make & make install。
2.2.3 交叉編譯freetds-0.82
    配置選項如下:
    ./configure --prefix=/usr/local/arm/freetds --with-tdsver=8.0 --disable-libiconv --host=arm-linux --with-unixodbc=/usr/local/arm/unixODBC-x86-2.2.12 --with-gnu-ld --enable-shared --enable-static  --enable-msdblib --enable-dbmfix
    將arm體系unixODBC目錄下的庫lib文件夾拷貝到x86體系unixODBC目錄下,替換x86下的庫,然后make & make install。
2.2.4 QT ODBC庫的移植
    如果需要在QT下直接通過ODBC方式訪問SQL Server,則開發板中還必需含有QODBC,這需要在交叉編譯QT4的庫時候加上配置選項-qt-sql-odbc 或者如下配置:
    ./configure -opensource -embedded arm -xplatform qws/linux-arm-g++  -no-webkit -qt-libtiff -qt-libmng  -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -iconv -qt-sql-odbc -I/usr/local/arm/unixODBC-x86-2.2.12/include -L/usr/local/arm/unixODBC-x86-2.2.12/lib
    然后make & make install,再將新編譯得到的lib目錄下的 *Sql*文件拷貝到開發板下,替換原來的文件。如果配置時添加的是 -plugin-sql-odbc 選項,需要將plgins/Sqldrivers/目錄下的所有文件拷貝到開發板相同目錄下。
2.3 SQL Server數據庫構建[5]
    導醫系統終端接收到病人ID號后將檢索數據庫。這個數據庫的構建直接關系到給出的導醫信息是否正確。試驗階段采用如圖4的數據庫結構。該數據庫一共由5個表組成:(1)Patient表。記錄病人姓名,將要前往就診的科室等信息;(2)Department表。記錄醫院科室名稱及所在物理位置等信息;(3)Terminal表。記錄終端機IP地址及所在物理位置等信息;(4)Position表。表示綜合終端機與科室相對位置關系,它的表項直接關系到導醫終端給出的方向指引是否正確;(5)Information表。綜合上述所有表給出導醫所需的信息:病人姓名、將要去往的就診科室和相對方向(將要去往就診的科室的方向)。應用程序只要依據病人ID檢索到information表即可獲取就醫導引所需的完整信息。

    SQL Server數據庫在試驗階段能夠比較完整地實現系統功能,實際使用時需要依據每個醫院的實際情況進行調整。導醫系統應用于實際醫院時可能需要另外構建一個數據庫服務器,并與醫院現有的HIS系統進行連接,以共享一套病人掛號科室等其他信息。
3 應用程序
    導醫終端上的應用程序采用QT4編程實現[6]。QT是一個基于C++的圖形用戶界面庫。它的跨平臺特性比較好,編輯好的程序代碼幾乎不需做修改就可以編譯出運行于其他平臺的可執行程序。應用程序的核心是檢測串口接收緩沖區,當串口接收緩沖區存在有效的病人ID號,即依據該ID號發起一次數據庫連接與檢索。不同于普通PC環境,在ARMLinux平臺下,需要解決三個核心問題:ARM-Linux下串口通信、漢字字符集兼容和SQL Server數據庫連接等。
3.1 ARM-Linux下串口通信
    QT下沒有提供串口通信的控件,但是提供了第三方的串口通信類qextserialport。本系統即是采用該類完成了ARM-Linux下的串口通信。該類繼承自QIODevice類,可分為Win_QextSerialPort和Posix_QextSerialPort,分別支持Windows和Linux兩種環境下的編譯。在Linux下需要添加 #define _TTY_POSIX_宏定義,以確保選擇正確的條件編譯。通過以下代碼即可打開串口ttySAC3,并設置波特率為9 600 Kb/s,無流控制和奇偶校驗, 8位數據位,1位停止位。
    port=new Posix_QextSerialPort("/dev/ttySAC3",
QextSerialBase::EventDriven);
    port->setBaudRate(BAUD9600);
    port->setFlowControl(FLOW_OFF);
    port->setParity(PAR_NONE);
    port->setDataBits(DATA_8);
    port->setStopBits(STOP_1);
3.2 字符集的轉換
    Linux系統下漢字一般采用Unicode編碼,而Windows系統下漢字一般采用GBK編碼。如果將檢索的結果做了不正確的轉化,則顯示的漢字將出現亂碼。這個問題可從以下兩個方面來解決:
    (1)移植freetds和unixODBC時,要將配置選項iconv設置為disable。具體來說,unixODBC的配置選項中一定要有--disable-iconv,freetds的配置選項中一定要有--disable-libiconv。這樣做可以避免ODBC和ODBC驅動進行字符集的自動轉換,從而避免出現無法預見的字符集不兼容問題。
    (2)QT為世界上多數語系提供廣泛支持。在編寫QT程序時一定要在主程序中添加相關代碼,定義好程序的字符編碼類型。如果希望應用程序用UTF8編碼,可以添加如下代碼:
    QTextCodec::setCodecForLocale(QTextCodec::codecForName
("UTF8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName
("UTF8"));
    QTextCodec::setCodecForTr (QTextCodec::codecForName
("UTF8"));
3.3 數據庫的連接與檢索
    為了實現數據庫的連接,需對freetds和unixODBC進行必要的配置。這可以通過修改freetds.conf文件、odbc.ini和odbcinst.ini文件來實現,這些文件分別在各自的安裝目錄下。有了unixODBC和freetds的支持,通過QT的ODBC庫QODBC就可以訪問Windows XP下的SQL Server數據庫了。
    QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("dbHospital");
    db.setUserName(QString("BME"));
    db.setPassword(QString("123456"));
    db.setConnectOptions("SQL_ATTR_ODBC_VERSION=
SQL_OV_ODBC3");
    由于QODBC會自動調用unixODBC和freetds的配置文件,所以不用調用setHostName()函數單獨設置數據主機名。實現了數據庫的連接,數據庫的檢索就相對簡單了。QSqlQuery提供了一套檢索數據庫的簡單方式。
4 實驗與討論
    經實驗驗證,該導醫系統能夠正確接收有源RFID標簽發射的病人ID號,并以此發起數據庫檢索,檢索得到病人就醫的相關信息后在終端上顯示導引信息。
    該導醫系統不僅可以完成就醫導引的任務,還可以擴展其他功能。例如,可以修改終端程序,使系統空閑時插播藥品廣告,這可以進一步減小系統成本。
    另外,可以修改導醫系統終端上的應用程序,使RFID閱讀器實現遠程控制。例如遠程控制閱讀器的開啟和關閉、增益設置等。實現方式是在導醫終端的后臺運行一個服務程序。該程序一直監聽一個socket端口,當收到有效的RFID控制指令時,將該控制指令寫入到UART發送緩沖區。RFID閱讀器上的程序收到命令后將執行相關操作。
    該智能導醫系統整合了有源RFID技術、嵌入式系統和數據庫等軟硬件技術,能夠為患者提供友好的就醫導引信息,也可以間接為醫院提供信息發布平臺,有較好的實用價值。整個系統還處于試驗、設計階段,應用于實際還需要較長時間的完善與驗證。后續的工作將集中于功能的整合、完善和儲存導醫信息數據庫建設。
參考文獻
[1] 張忠安,齊俊傳.門診排隊叫號系統設計[J].醫療衛生裝備,2006(10).
[2] 李俊,高錄濤.掛號分診的方法及技巧探討[J].中國誤診學雜志,2009(20).
[3] Bi Chunyue.Research and application of SQLite embedded   database technology[J].WSEAS Transactions on Computers,2009,8(1):83-92.
[4] 韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2009.
[5] 孫明麗.SQL Server 2005數據庫系統開發完全手冊(第一版)[M].北京:人民郵電出版社,2007.
[6] BLANCHETTE J,SUMMERFIELD M.C++ GUI programming   with QT4(second edition)[M].BeiJing:Publishing House of  Electronics Industry,2008.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 福利视频观看 | 免费的色视频 | 色视频网址| 成人在线观看国产 | 欧美精品一区二区三区免费 | 久久精品中文字幕一区 | 精品日产一区二区 | 欧美怡春院一区二区三区 | 精品中文字幕在线 | 激情五月婷婷小说 | 激情五月黄色 | 九九99九九视频在线观看 | 国产在线成人精品 | 免费黄视频网站 | 99精品免费在线观看 | 九九热国产在线 | 高清女主播一区二区三区 | 999精品视频这里只有精品 | 亚洲国内精品 | 久久精品中文字幕不卡一二区 | 久久www免费人成看国产片 | 国产成在线人视频免费视频 | 国产片最新大片免费看 | 国产羞羞| 漂亮的保姆完整版免费韩剧 | 四虎免费观看 | 外国色视频 | 国产婷婷色 | 大色综合色综合资源站 | 你懂的成人 | 国产亚洲人成网站在线观看 | 激情五月六月婷婷 | 激情四月婷婷 | 99国产精品免费观看视频 | 日本一区二区三区高清福利视频 | 国产成人综合久久精品下载 | 日韩a一级欧美一级 | 欧美午夜在线 | 激情奇米网| 搡老女人免费视频 | 婷婷激情四月 |