论文部分内容阅读
摘 要:语言不通,医嘱信息难以传达的情况在医院普遍存在。该项目为解决医患之间医嘱沟通问题,提供一种解决方案。医院每个药袋都有唯一标识的二维码,解析二维码信息,从而调取数据库医嘱信息。通过音标标注法,数据灵活性强,实现了海南话方言、英语等多语种播音。让二维码用多语种“说话”,达到正确及时传达医嘱信息的目的,尽可能减少药品不良事件的发生。
关键词:二维码;多语种;语音;医嘱;移动医疗
中图分类号:TP311 文献标识码:A
Abstract:The language barrier severely impedes the transfer of the doctor’s advice in most hospitals.The project aims to offer an effective solution to the communication problem between doctors and patients.On each medicine package is a unique QR code.The doctor’s advice can be obtained from the database by scanning the QR code.Since the application of phonetic annotation provides the system with good flexibility,the system can broadcast in different languages and dialects,such as English and Henan dialect,to name but a few.Through QR code,the system can accurately convey the doctor’s advice in time by "speaking" in different languages and dialects,which can eliminate drug misuse to a large extent.
Keywords:QR code;multilingual;voice;the doctor’s advice;mobile medical
1 引言(Introduction)
随着科学技术的发展,信息传递技术也在不断发展和进步。自电子计算机问世以来,信息传递技术的发展又进入了一个崭新阶段,出现了许多大容量、高效率、可靠性好的现代化的信息传递技术[1]。语音合成[2]作为一种新的信息传递技术,已被应用在了人机交互中。全球各地多民族、地方性语言众多,语言不通造成沟通障碍,因此多语种的语音合成成为了人机语音交互领域的研究热点[3]。
目前汉语普通话的语音合成系统已經比较成熟,除实现了中英文混合语音合成[4]外,还实现了普通话到闽方言中台湾话的语音转换[5]。在方言的语音合成中,利用语音修改技术[6],将普通话的韵律修改为方言的韵律,实现了华北方言中聊城话[7]、兰州话[8]等的语音合成,另外也实现了英语、韩语等国际性语种的语音合成。当前将地方性方言语种应用到的计算机应用方面的研究,专注于方言语音合成方法研究[9],并没有将其应用到生活医疗中。最常见的文语转化系统中也多数提供基本国际化语种[10],目前没有找到关于地方性语言在医疗方面的研究应用。并且例如考虑老年人群,在医院看病,只会海南话,不会普通话,视力退化也看不清文字,单从医疗信息传递的正确性与及时性方面来说,就有很大的问题和不足[11,12]。移动医疗还有很大的发展空间,前景广阔但任重道远。
移动医疗是当前移动开发的研究热点之一,移动医疗的发展为医疗行业的进步带来了新的机遇。移动通信技术和智能设备的迅速发展为移动医疗提供了机会,利用新技术覆盖到以前无法做到或需要高昂代价的医疗服务环节,进而实现医疗服务生态各个角色高效实时的信息服务,具有重大研究和应用价值。多语种医嘱播报系统(Multilingual Speech Orders Broadcast System)就是在此时代背景下的一个有益尝试。基于android系统[13],为医疗电子应用市场提供合适的解决方案,在一定程度上解决了与患者在药品医嘱沟通方面存在的问题;它还将带来医疗服务工作的流程简化和效率提高;并且二维码作为一种全新的信息储存、传递和识别技术,与患者信息安全密切相关。利用二维码加密,在保障了患者信息安全性的前提下,有助于医疗资源的合理分配和共享。本项目是对移动医疗进行拓展与创新,尤其是其中地方性方言语种的播报,例如海南话,极具特色,具有一定的实用性和创新性。
2 设计与实现(Design and implementation)
2.1 软件功能设计
医嘱信息难以传达的情况在医院普遍存在,护士不能正确、及时传达信息给患者,使得患者容易对某些治疗和护理措施缺乏理解和配合,从而延误治疗和护理,甚至可能造成意外伤害。医院药品袋上已经有了为方便药品正确抵达病人手中而设计的二维码,如果我们让二维码用多语种“说话”,就能达到正确及时传达医嘱信息的目的,减少药品不良事件的发生。本项目,就是基于这个想法开展的。
多语种医嘱播报系统软件实现功能如图1所示。
研究主要内容:
(1)二维码生成与扫描:二维码信息为医嘱id。
(2)语音库维护:包括音标输入、音标校准等。
(3)个性化设置医嘱播报语种。
(4)扫描药袋上的二维码获取医嘱信息。
(5)多语种语音播报医嘱。
通过手机图像采集设备获小袋上二维码,将二维码作为数据库接口,调取数据库中存储的医嘱信息,从SDK获取语音内容,语音播报药品的基本用法、用量,如餐前30分钟口服、每日3次等,语音播报语种包括海南话、普通话、英文等,个性化设置医嘱播报语种,帮助理解和正确使用药品,在一定程度上解决医嘱沟通障碍问题。 其数据流图设计如图2所示。
2.2 设计方案及解决
(1)二维码扫描解码及连接数据库的实现:扫描时调用照相机,通过onPictureTaken函数二维码图片处理成位图,对位图进行译码,按照QRCODE二维码生成方式解码成字符型[14]。调用Android开放源码库文件google.zxing包,实现二维码、条形码的扫描解码。通过手机客户端的APP扫描该二维码,根据解码的信息调取数据库存储信息。Android连接Sql server 2005数据库存取数据时,由于android不能直接连接Sql server 2005数据库,本文通过Web service实现android与Sql server的数据交互。开放性是Web services的基础,可以实现跨平台使用。不同平台和不同软件的不同组织间传递信息,需要Web service的SOAP协议。SOAP可以运行在任何其他传输协议上,开放源码库ksoap2-android-assembly-3.1.0-jar-with-dependencies.jar,就是以此为基础来实现android连接其他平台数据库并存取数据。
/*在工程AndroidManifest.xml文件中添加扫描所需权限,调用相机,捕获二维码/条形码图片,对应处理图片后获得医嘱id信息*/
// 通过web service获取sql server数据库数据
public void doStart(String methodName,HashMapparams,Context context,String text){
url="http://cocoa-0706.hicp.net:11566/Service1.asmx";
//服务器ip、端口号、web service文件
namespace="http://tempuri.org/";
this.methodName=methodName;
this.params=params;
progressDialog=ProgressDialog.show(context,
"提示","正在" text "waiting...",true);
this.start();
}
/*对应public void run()、private Object CallWebService() ,应用soap向web service 发送请求信息,及接收服务器传输到应用程序的数据*/
(2)默认语种的设置:采用菜单栏设置语种部分根据android特性,利用java代碼语言startActivityForResult方法实现设置完成后,回到原界面,除需要修改的数据外,其他数据保持原样。默认语种的设置采用了android.content.SharedPreferences方法,sharedpreferences可以将数据保存在应用软件的私有存储区,这些存储区的数据只能被写入这些数据的软件读取。首次安装并登录软件时,sharedpreferences并没有保存数据,系统默认普通话;非首次登录时,sharedpreferences是采用了xml格式将数据存储到设备中,在ddms中的file explorer中的/data/data//shares_prefs下,使非首次登录默认播报上一次设置的语种。
//数据存储在本地文件
public SharedPreferences prefere;
SharedPreferences.Editor editor;
//创建编辑对象
editor=prefere.edit();
//编辑数据,将语种设置放入文件存储
editor.putString("language",WebReturnValues.lang);
// 提交数据
editor.commit();//添加完后必须提交
//在语音播报界面,非首次登录默认播报上一次设置的语种,否则默认中文
if (prefere.getString("language","")!=null){
WebReturnValues.lang=prefere.getString("language","");
findorder(handlerET,WebReturnValues.lang);
}
else {
WebReturnValues.lang="FindOrderCH";
findorder(handlerET,WebReturnValues.lang);
}
(3)播放语音:调用Android开放源码库文件讯飞语音Msc.jar包[15],实现联网播放中文和英文,但是没有海南话,需要通过自己设计音标数据库,数据库中存储海南话的音标。音标标注法是解决问题的关键点。通过海南话音标标注,实现了中文、英文、海南话等多语种播音。
/*在工程AndroidManifest.xml文件中添加RECORD_AUDIO、ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE、CHANGE_NETWORK_STATE、INTERNET权限 */
// 合成语音界面,调用SDK的SynthesizerDialog实现语音合成.
private void synthetizeInSilence(){
关键词:二维码;多语种;语音;医嘱;移动医疗
中图分类号:TP311 文献标识码:A
Abstract:The language barrier severely impedes the transfer of the doctor’s advice in most hospitals.The project aims to offer an effective solution to the communication problem between doctors and patients.On each medicine package is a unique QR code.The doctor’s advice can be obtained from the database by scanning the QR code.Since the application of phonetic annotation provides the system with good flexibility,the system can broadcast in different languages and dialects,such as English and Henan dialect,to name but a few.Through QR code,the system can accurately convey the doctor’s advice in time by "speaking" in different languages and dialects,which can eliminate drug misuse to a large extent.
Keywords:QR code;multilingual;voice;the doctor’s advice;mobile medical
1 引言(Introduction)
随着科学技术的发展,信息传递技术也在不断发展和进步。自电子计算机问世以来,信息传递技术的发展又进入了一个崭新阶段,出现了许多大容量、高效率、可靠性好的现代化的信息传递技术[1]。语音合成[2]作为一种新的信息传递技术,已被应用在了人机交互中。全球各地多民族、地方性语言众多,语言不通造成沟通障碍,因此多语种的语音合成成为了人机语音交互领域的研究热点[3]。
目前汉语普通话的语音合成系统已經比较成熟,除实现了中英文混合语音合成[4]外,还实现了普通话到闽方言中台湾话的语音转换[5]。在方言的语音合成中,利用语音修改技术[6],将普通话的韵律修改为方言的韵律,实现了华北方言中聊城话[7]、兰州话[8]等的语音合成,另外也实现了英语、韩语等国际性语种的语音合成。当前将地方性方言语种应用到的计算机应用方面的研究,专注于方言语音合成方法研究[9],并没有将其应用到生活医疗中。最常见的文语转化系统中也多数提供基本国际化语种[10],目前没有找到关于地方性语言在医疗方面的研究应用。并且例如考虑老年人群,在医院看病,只会海南话,不会普通话,视力退化也看不清文字,单从医疗信息传递的正确性与及时性方面来说,就有很大的问题和不足[11,12]。移动医疗还有很大的发展空间,前景广阔但任重道远。
移动医疗是当前移动开发的研究热点之一,移动医疗的发展为医疗行业的进步带来了新的机遇。移动通信技术和智能设备的迅速发展为移动医疗提供了机会,利用新技术覆盖到以前无法做到或需要高昂代价的医疗服务环节,进而实现医疗服务生态各个角色高效实时的信息服务,具有重大研究和应用价值。多语种医嘱播报系统(Multilingual Speech Orders Broadcast System)就是在此时代背景下的一个有益尝试。基于android系统[13],为医疗电子应用市场提供合适的解决方案,在一定程度上解决了与患者在药品医嘱沟通方面存在的问题;它还将带来医疗服务工作的流程简化和效率提高;并且二维码作为一种全新的信息储存、传递和识别技术,与患者信息安全密切相关。利用二维码加密,在保障了患者信息安全性的前提下,有助于医疗资源的合理分配和共享。本项目是对移动医疗进行拓展与创新,尤其是其中地方性方言语种的播报,例如海南话,极具特色,具有一定的实用性和创新性。
2 设计与实现(Design and implementation)
2.1 软件功能设计
医嘱信息难以传达的情况在医院普遍存在,护士不能正确、及时传达信息给患者,使得患者容易对某些治疗和护理措施缺乏理解和配合,从而延误治疗和护理,甚至可能造成意外伤害。医院药品袋上已经有了为方便药品正确抵达病人手中而设计的二维码,如果我们让二维码用多语种“说话”,就能达到正确及时传达医嘱信息的目的,减少药品不良事件的发生。本项目,就是基于这个想法开展的。
多语种医嘱播报系统软件实现功能如图1所示。
研究主要内容:
(1)二维码生成与扫描:二维码信息为医嘱id。
(2)语音库维护:包括音标输入、音标校准等。
(3)个性化设置医嘱播报语种。
(4)扫描药袋上的二维码获取医嘱信息。
(5)多语种语音播报医嘱。
通过手机图像采集设备获小袋上二维码,将二维码作为数据库接口,调取数据库中存储的医嘱信息,从SDK获取语音内容,语音播报药品的基本用法、用量,如餐前30分钟口服、每日3次等,语音播报语种包括海南话、普通话、英文等,个性化设置医嘱播报语种,帮助理解和正确使用药品,在一定程度上解决医嘱沟通障碍问题。 其数据流图设计如图2所示。
2.2 设计方案及解决
(1)二维码扫描解码及连接数据库的实现:扫描时调用照相机,通过onPictureTaken函数二维码图片处理成位图,对位图进行译码,按照QRCODE二维码生成方式解码成字符型[14]。调用Android开放源码库文件google.zxing包,实现二维码、条形码的扫描解码。通过手机客户端的APP扫描该二维码,根据解码的信息调取数据库存储信息。Android连接Sql server 2005数据库存取数据时,由于android不能直接连接Sql server 2005数据库,本文通过Web service实现android与Sql server的数据交互。开放性是Web services的基础,可以实现跨平台使用。不同平台和不同软件的不同组织间传递信息,需要Web service的SOAP协议。SOAP可以运行在任何其他传输协议上,开放源码库ksoap2-android-assembly-3.1.0-jar-with-dependencies.jar,就是以此为基础来实现android连接其他平台数据库并存取数据。
/*在工程AndroidManifest.xml文件中添加扫描所需权限,调用相机,捕获二维码/条形码图片,对应处理图片后获得医嘱id信息*/
// 通过web service获取sql server数据库数据
public void doStart(String methodName,HashMap
url="http://cocoa-0706.hicp.net:11566/Service1.asmx";
//服务器ip、端口号、web service文件
namespace="http://tempuri.org/";
this.methodName=methodName;
this.params=params;
progressDialog=ProgressDialog.show(context,
"提示","正在" text "waiting...",true);
this.start();
}
/*对应public void run()、private Object CallWebService() ,应用soap向web service 发送请求信息,及接收服务器传输到应用程序的数据*/
(2)默认语种的设置:采用菜单栏设置语种部分根据android特性,利用java代碼语言startActivityForResult方法实现设置完成后,回到原界面,除需要修改的数据外,其他数据保持原样。默认语种的设置采用了android.content.SharedPreferences方法,sharedpreferences可以将数据保存在应用软件的私有存储区,这些存储区的数据只能被写入这些数据的软件读取。首次安装并登录软件时,sharedpreferences并没有保存数据,系统默认普通话;非首次登录时,sharedpreferences是采用了xml格式将数据存储到设备中,在ddms中的file explorer中的/data/data//shares_prefs下,使非首次登录默认播报上一次设置的语种。
//数据存储在本地文件
public SharedPreferences prefere;
SharedPreferences.Editor editor;
//创建编辑对象
editor=prefere.edit();
//编辑数据,将语种设置放入文件存储
editor.putString("language",WebReturnValues.lang);
// 提交数据
editor.commit();//添加完后必须提交
//在语音播报界面,非首次登录默认播报上一次设置的语种,否则默认中文
if (prefere.getString("language","")!=null){
WebReturnValues.lang=prefere.getString("language","");
findorder(handlerET,WebReturnValues.lang);
}
else {
WebReturnValues.lang="FindOrderCH";
findorder(handlerET,WebReturnValues.lang);
}
(3)播放语音:调用Android开放源码库文件讯飞语音Msc.jar包[15],实现联网播放中文和英文,但是没有海南话,需要通过自己设计音标数据库,数据库中存储海南话的音标。音标标注法是解决问题的关键点。通过海南话音标标注,实现了中文、英文、海南话等多语种播音。
/*在工程AndroidManifest.xml文件中添加RECORD_AUDIO、ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE、CHANGE_NETWORK_STATE、INTERNET权限 */
// 合成语音界面,调用SDK的SynthesizerDialog实现语音合成.
private void synthetizeInSilence(){