2010.1数据通信 一一j 莓 鎏舅基于SIP的远程医疗传输系统实现 王方超’柏森 黄永峰 王晏。(1.解放军重庆通信学院重庆400035: 2.清华大学电子工程系北京1 00084: 3.解放军海军航空工程学院烟台26400 1) 摘要:提出了一种基于会话初始协议(sIP)远程医疗系统的整体结构和客户端软件实现过程,并介绍了该 系统在中欧高速IPV6_ ̄.联网络的应用和实际运行睛况,分析了sIP协议的优势和在远程医疗系统应用中的前景。 关键词:远程医疗;SIP;多线程 远程医疗是一种新的医学模式,它是现代医学 信的信令控制【31。SIP是工作在应用层的一个信令,用 技术、计算机网络技术和现代通讯技术相结合的产 来建立、修改和终止多媒体会话过程。 物。其最大优点是资源共享的高效性、对紧急情况处 SIP协议采用客户机/HE务器模式的工作方式, 理的时效性、节省医院和患者开支的经济远程医疗; SIP网络包括两类组件:用户代理(UA)和网络服务器 SIP;多线程性。通过宽带网络或电话线路等提供远 (Network Server)。其中用户代理又分为负责发起SIP 程医疗,不仅能够为病人的治疗提供时间保障、减少 呼叫请求的用户代理客户端(UAC)和负责对呼叫请 病人费用开支,还能提高医生和医院的知名度。 求做出响应的用户代理服务器(UAS);网络服务器 目前,国内外已经有一些远程医疗系统lll,但相 包括注册服务器、代理服务器、位置服务器、重定向 关软件(包括服务端传输、图像浏览等)不仅价格昂 服务器。这一系列服务器主要为用户提供注册、鉴 贵,而且不同厂商之间的软件无法兼容。这些系统对 权、认证和路由等服务。SIP支持建立和结束多媒体 于我国大多数地域软硬件相对落后的实际情况来 通信的5个方面:用户定位、功能与可用性、呼叫建立 说,显然存在局限性。另外,由于各种原因,现有的众 以及呼叫处理 。 多医疗应用系统(如各种HIS、PACS系统)之间的数 与H.323协议不同,SIP不是一个集成的通讯系 据交换比较困难,这种情况影响了医疗信息的共享, 统,它只是一个信令传输协议,负责信令的传输和会 严重阻碍了我国医疗信息化建设的整体进程l 2l。 话的协商。SIP可以用作其他IETF协议的一个部分, SIP协议具有实现简单、兼容性好和扩展性强等 用来构造完整的多媒体架构。例如这些架构将会包 特点,利用SIP协议进行远程医疗系统开发具有很大 含实时数据传输协议(RTP)用来传输实时的数据并 的优势,即可以与其他用SIP开发的软件系统相兼 且提供QoS反馈,实时流协议(RSTP)用于控制流媒 容,又可以保证系统升级和功能扩展的便利。本文利 体的传输,媒体网关控制协议用来控制到公共电话 用SIP协议完成了远程医疗软件的设计和实现。 交换网(PSTN)的网关,会话描述协议(SDP)用于描 述多媒体会话。因此,SIP只有和其他的协议一起工 作,才能提供完整的端对端的用户服务。 由此可见,SIP是一个轻型的,多用途的工具,本 1 SIP特点分析 会话初始协议SIP(Session Initiation Protoco1)是下 一代网络(NGN)中的核心协议之一。它最初是由I— 身并不提供具体的服务,可以用来创建、修改和终止 ETF的MMUSIC(Multipany Multimedia Session contro1) 会话,它独立运作于通讯协议之上,且不依赖建立的 工作组在1996提出的一个标准,用来解决IP网上通 会话类型。SIP可以用来实现不同的服务,目前应用 收稿日期:2oo9一’2一o9i 41 _篷鑫簦 消息、文件发送、电子白板和实时医疗曲线的传输。 数据通信2010.1 中,SIP主要用于提供VOIP ̄_[k务。我们利用sIP实现的远 络环境不是很好时,要能够提供最低的通信保障,即 程医疗软件,不仅包括音视频数据的传输,还包括即时 时消息发送因为占用的数据量较少,但又能明确的 传达个人意思,因而需要包含即时消息功能;病人和 医生之问的问诊或者医生与医生之间的交流都免不 2远程医疗模型设计 2.1 整体框架设计 了要交换病人的电子病历等重要文件,此时进行文 件发送是很重要的一个功能;如果双方需要共同查 远程医疗系统采用传统的C/S架构设计,主要包 看某一张图片,用电子白板进行显示并进行双方的 括服务器的配置和软件客户终端的开发。服务器主 交流是必要;医疗曲线能够实时显示病人的一些生 要负责SIP信令的交互,当会话建立,即sIP信令呼叫完 理参数如脑电图曲线、心电图曲线等。实现以上功能,远程医疗软件终端设计采用分 成启动医疗数据传输系统时,数据的交互不再需要服 务器的支持,而是使用peer—to—peer的端到端传输。 层设计思想,将软件分为用户界面层、核心接口层、 系统中使用到的功能服务器有:代理服务器 功能层和传输层。其中,软件的功能实现是在功能 P信令处理模块和医疗数 (Proxy server)为SIP网络体系的桥式单元,起到寻径、 层,主要包括两个模块:SI 转发SIP消息的作用;注册服务器(Registrar server)为 据处理模块。图2所示,用户界面层基于Visual studio 2005,位 用户提供注册服务,转发前往本地用户的SIP消息, 提供用户授权服务,与代理服务器一起提『共用户定 于整个应用程序的最上层,提供图形界面,确定软件 屏蔽了下层 位服务;地址服务器(Location server)存储SIP用户注 的框架。核心接口层调用一些接口函数,便于用户界面层中控 册信息与IP地址的映射表,与注册服务器一起为用 模块的细节,提供简单的接口, 户提供地址查询服务。本系统中没有使用重定向服 件的回调函数调用,实现用户界面与功能层的对接。P信令的解析和生成,负责完成医疗数 务器(Redirect server)。在功能测试时,我们将3个功 功能层实现SI能实体放置在一台物理服务器上,使用SERJ] ̄务器搭 据的处理,是整个软件的主体部分及各个功能实现 UDP传输层负责实现医疗数据的 建,这样即可以节省资源又满足了基本的要求。整个 的关键模块。TCP/底层socket传输 软件系统的开发基于windows XP系统进行。 软件终端的设计包括医疗数据的采集和传输。 模块有:用户界面、sIP消息处理、音视频通信、即时 消息、文件发送、电子白板和医疗曲线。终端的具体 开发使用分层思想,各个功能模块独立开发。整个系 统之间的通信如图1所示。 …。。。 ………一 羽 慧 曩燎 户 上 伪 [蕈] 团 薯 夸 赴 爱 ■ 避瓣嚯磬器 謦 界朕瓤 胃一 一窗一窗一亩萄 篓 叠霉 图2客户终端设计 一 一~ 3终端具体实现 本设计各功能之间相对独立,分别使用子线程 实现。在程序启动时,首先运行SIP信令控制线程监 听sI晡求消息。其他模块所用线程只有当相应的模 ………………………~… 块建立服务时,子线程才会建立,各个模块中除了即 时短消息发送是与SIP信令控制模块使用同一个子 图1整体框架设计 2_2终端软件设计 线程外,其他模块都需要建立自己独立的线程。各个 进行远程医疗,其中音视频通信必不可少;当网 子线程之间的通信如图3所示。。’ — ‘ 。。。。。’— —— ‘。。。。 。 ———’ _。。。。 ————— ‘。。。——— —— 。。 ’’————— 。。 ’———— 。‘ 。。 ————— 。’———————————— ————~一———42 l 2010.1 数据通信 ・ 行回复。 文件发送、电子白板和医疗曲线的SIP信令过程 没有使用如音视频会话的“三次握手”的信令模式, 目的是为了设计和实现的方便。当主叫发起呼叫时, 为了确保被叫能收到呼叫消息,规定每隔一段时间 (如1秒)发送一次呼叫消息(如文件发送中为FILE- SEND),被叫收到呼叫消息后发送回复消息,也是每 隔一段时间发送一次回复消息,直到收不到对方的 呼叫消息为止。这样的设计同样能达到音视频会话 3.1 SIP消息处理模块 前“三次握手”的效果。 SIP消息模块主要负责会话的建立、保持和释 对于文件发送、电子白板和医疗曲线的SIP信令 放。在远程医疗会话建立之前,客户端首先向注册服 交互完成后,我们分别建立了文件发送会话、电子白 务器发起注册(Register),发送REGESrrER}肖息,服务 板会话和医疗曲线会话。 器将检查用户数据库,并把用户IP地址和用户名交 3。2音视频处理模块 给位置服务器保存。注册完成后进行呼叫和对话。 SIP信令的音视频呼叫完成即会话建立后,SIP信 SIP消息处理模块具有2个功能,一是当发起呼叫时 令控制线程将通知相应的音视频处理线程,进行音 进行SIP信令的交互;二是时刻监听是否有SIP请求消 视频的实时采集、传输及回放。音视频的实时采集、 息到来,SIP请求消息的监听是通过建立一个单独的 回放和传输将使用多个线程处理,具体实施为音频 SIP信令控制线程来实现。 数据采集、音频数据的编码和发送、音频数据的接收 对于音视频通话和即时消息,SIP协议规定了如 和解码、音频数据的回放各使用一个线程实现;视频 何发起SIPW ̄Iq和相应的应答。而对于本设计的远程 数据的采集、视频数据的编码和发送、视频数据的接 医疗终端中的文件发送、电子白板和医疗曲线的SIP 收和解码、视频数据的回放各使用一个线程。共建立 消息,则需要自己扩展。扩展后远程医疗终端中用到 8个线程。 的基本SIP信令使用见表1。 表1各服务对应SIP消息 服务划分 音频会话 视频会话 即时消息 文件发送 对于音视频数据的采集,可以使用微软在Win- dows操作系统下自带的waveInxxx和waveOutxxx系列 被叫方消息 18O、2000K 180、200OK MESSAGE FLSD BACK 主叫方消息 INVlTE、ACK RE INVITE、ACK MESSAGE HLESEND 函数和vfw32.1ib库中的函数。音视频数据的传输则使 用RTP和RTCP协议打包。 3.3即时消息模块 SIP协议实现即时通信是通过SIP协议的扩展 来 实现即时消息的传输。即时消息扩展的SIP消息为 MESSAGE,格式按照sIP协议的标准实现,需要传输 的即时文本消息使用XML语言格式化,通过MES— 电子白板 医疗曲线 WHITEB0ARD MEDICALCURVE WHBD BACK MEDCUR—BACK 其中,音频会话中INVITE用来呼叫对方,被叫收  ̄INVITE呼叫后,本地振铃并回复180临时响应消 息,当被叫摘机以后,发送2000K消息,主叫收到 SAGE发送到被叫方,被叫方收 ̄tJMESSAGE消息后, 解析消息体内容的XML格式化文本,得到呼叫方的 即时消息。 3.4文件发送模块 200OK后回复ACK确认消息,此时音频会话建立。视 频会话过程与音频会话相似,不同之处在于此时的 呼叫为2次呼叫,呼叫消息使用RE—INVITE。 即时短消息的数据量通常较小,因此直接将消 文件的发送过程分为文件信息头的发送和文件 内容的发送两部分,传输时使用TCP模式的socket传 输。我们创建一个文件头结构体来存储文件的一些 息内容放人SIP消息MESSAGE的消息体中发送,如被 叫方需要回复短消息,则同样使用MESSAGE消息进 基本信息,这些信息包括文件的属性等。其结构体命 名为SOCKET_STREAM—FILE_INFO,内容为: I 43 l_量 —一~一 typ ̄f structSOCKETSTREAMF1LE_—数据通信2010.1 INFOf TCHAR DWORD FILETIME FILETIME FILETIME szFileTitle[128]; dwFileAtt utes; ftCreationTime; ftLastAccessTime; ftLastWriteTime; //文件的标题名 //文件的属性 //文件的创建时间 //文件的最后访问时间 //文件的最后修改时间 融为一体的SIP开源代码服务器。测试时,客户端运 行在Windows XP系统平台下,SER J] ̄务器运行在Lin- [IX环境下,IPv4的网络环境为公网,不用考虑NAT穿 透问题。 测试流程:首先,位于不同位置的客户端软件向 DWORD DWORD DWORD nFileSizeHilgh; nFileSizeLow; dwReserved0; //文件大小的高位双字 //文件大小的低位双字 ,/保留,为0 SERJJ ̄务器注册;注册成功后客户端以注册获得的合 法ID号或用户名登陆;然后,由客户端呼叫另一客户 端,呼叫时,直接输入被叫用户名即可;呼叫建立后 即可进行各种服务对话。因为我们设计的软件各个 模块之间是相对独立的。因此在呼叫时,可以根据用 DWORD dwReserved1; //保留,为0 lS0CKET—STREAM—FILE—INFO, PS0CKE r.STREAM—FILE—INFO; 3.5电子白板模块 户的需求有选择的进行各种服务,这种设计更加显 示了软件设计的人性化理念。 5 结论 电子白板功能主要完成曲线的绘制,并且要求 绘制出的曲线能够在远端和本地端实时显示。电子 白板中处理的数据除了需要传输的白板背景图片以 外,基本是曲线类型信息、划线的坐标信息和画笔画 刷的属性选择信息。因此电子白板功能中所要传输 的数据量比较少,且要求实时传输,尽量减少数据的 利用SIP协议进行远程医疗系统的开发,不仅方 便快捷,而且兼容性好,可以与其他任何使用SIP协 议开发的客户端互联互通。并且对于今后的系统升 级和功能扩展具有很大的可操作性。 参考文献 【1】李亚军.远程医疗在国内的应用和发展fJ】.医学信息学, 2006,19(1):39-40 丢失。我们直接使用TCP进行数据的socket传输,数据 打包的结构体为: typedef struct MSGBUFFER__WHITE{ I2STR operations; Int Pentype;Int xPoint; Int yPoint; 脆生择画笔类型 //画点的X坐标 //画点的y坐标 }MSG BUFFER_WHITE, PMSG_BUFFER_WHITE; [2]徐遄,贾克斌,张立.远程医疗系统的实现及其关键技术的 研究『JJ_计算机丁程,2004,30( 10):172—174 3.6医疗曲线模块 医疗曲线模块中要处理的数据与电子白板模块 [31 HANDL EYM.SIP:session initiation protocol[z1.IETF—RFC 中的数据相似,基本的数据需要描绘点的坐标。因为 因此在所传输的数据中必须要有标示曲线类型的信 息及有标示曲线属性的信息,医疗曲线中使用的数 2543,1999 4】白建军,彭晖,田敏.SIP揭密【M].北京:人民邮电出版社,2003 在医疗曲线中有多种曲线需要我们选择进行显示, 【作者简介:王方超,硕士,主要研究方向为计算机网络通信、数 字图像处理。■ 据打包结构体为: typedef struet MSGBUFFER_—CURVE( LPSTR operations; Int Curvetype; Int xPoint; Int yPoint; ,/曲线类型 //画点的x坐标 画点的y坐标 }MSG BUFFER.CURVE。*PMSG BUFFER CURVE; 4测试环境 远程医疗系统分别在IPv4和IPv6网络环境下进 行不同的测试。远程医疗系统的测试服务器使用SER 服务器,即将注册服务器、代理服务器及位置服务器