基于树莓派的超短波治疗仪软件系统设计

2021-04-23 05:51李方云王云光
软件导刊 2021年4期
关键词:身份证号超短波树莓

李方云,王云光

(1.上海理工大学医疗器械与食品学院;2.上海健康医学院医疗器械学院,上海 200093)

0 引言

超短波治疗仪是一种先进的临床医疗常用仪器[1-3],工作原理是由超短波治疗仪的极板形成频率为40.68MHz左右的高频电场,作用于人体病患部位产生热效应加剧人体血液循环,增进组织细胞新陈代谢以达到治疗效果[4]。在临床上已广泛应用于高血压、膝骨关节、儿童分泌性中耳炎以及中风肩手综合征等疾病的诊断与治疗[5-8]。

通过阅读相关文献发现,国内外对超短波理疗仪的需求量十分庞大,市面上常见的超短波理疗仪少有配套的软件系统。荷兰Enraf Nonius 公司研发的Radarmed 650 超短波理疗仪具有持续和脉冲两种输出摸式,治疗过程需要硬件设置输出功率、治疗时间等参数,与病人信息系统分开。河南翔宇医疗器械公司型号分别为HYJ-1、HYJ-2 的极超短波理疗仪,LED 数码管显示时间与输出功率,同样与病人基本信息分开。近年来,语音技术应用日趋成熟,运用越发广泛[9-10],智能化语音导航机器人、AI 语音对话机器人的出现极大方便了人们的生活。在医疗行业,语音很有可能会成为下一代交互设计中最有意义的交互方式[11-12]。基于此设计一款集合语音助手功能的多模块、交互性强、操作简便的超短波治疗仪软件系统显得尤为必要。

Qt 是一种跨平台、面向对象的C++应用程序图形界面设计软件,PyQt 则是Python 和Qt 的结合,将二者的优点相融合可用于高效地编写各类GUI 应用程序[13]。PyQt5 本身拥有超过620 个类和6 000 个函数及方法,其具有设计界面简捷、美观,应用程序实时性和灵活性高等特点,支持Unix、Windows、Mac OS 多个平台。Pycharm 融合了PyQt5的工具包,支持Python 编程,本文设计的软件主要在Pycharm 中进行。Raspberry Pi 简称树莓派,是基于Linux性价比较高的迷你计算机,有Type-C 接口、MicroUSB 接口以及3.5mm 的音频输出接口[14],在本设计中可提供麦克风阵列、播放语音等功能,其微小、易于开发的特点成为本项目的硬件首选。超短波治疗仪结构如图1 所示。

Fig.1 Structure of ultrashort wave therapeutic apparatus图1 超短波治疗仪结构

1 系统环境搭建

本设计采用Pycharm+PyQt5+Qt Designer+树莓派开发环境。首先格式化SD 卡,使用Win32DiskImager 烧录系统镜像,开机连接WiFi,用Advanced IP Scanner 查询树莓派的地址,随后利用Putty 远程登录树莓派即可进行相关操作。PyCharm 是一种Python IDE,初次使用可以通过学号或教职工编号在官网申请获得永久使用权。首先从官网下载Pycharm 软件Linux 版本,文件默认下载到/home/pi/Downloads 目录下,通过命令解压后安装即可:tar zxvf pycharm-professional-2019.2.3.tar.gz。PyCharm 是一种Python IDE,初次使用可以通过学号或教职工编号在官网申请获得永久使用权。初次打开软件时需要设置Python 解释器,将提前安装好的python.exe 文件加入环境中。随后在Pycharm 中选择File-settings-Project Interpreter,添加相关PyQt5 的工具包;然后选择File-settings-Tools-External Tools,点击左上角的绿色加号,Name 填入Qt Designer,Program 选择已安装的PyQt5-tools 下面的designer.exe。Working directory 则选择工作目录,点击OK 则添加了Qt Designer 作为PyCharm 的外置工具;Qt Designer 生成的.ui文件需要通过PyUIC 工具转换成.py 文件,用同样的方法添加pyuic 和pyrcc,pyrcc 主要负责将图片转换成可用的Python 代码。至此本设计所需要的编程环境已经完成。

2 系统界面及功能

2.1 注册登录模块

登录界面和注册界面在Qt Designer 中设计,选择Dialog 窗口类型,页面布局采用QGridLayout,选择合适的控件添加背景完成界面设计后生成.ui 并转为.py 文件,采用界面和逻辑代码分开原则,易于后期系统维护。该系统选用MySQL Server 数据库建立所需的相关数据库。在Function()类中添加SQLAlchemy 类设置数据类型,Pymysql 接口中的 database 类用于数据库的连接、创建等操作。show_warning_message()、show_info_message()函数用于弹出提示框。新用户首先进行注册,在注册界面输入姓名、身份证号、密码,确认密码点击确定即注册成功。在RegisterDialog 类中添加id_validator 类对身份证号进行校验,do_register()函数用于判定注册界面姓名是否输入、身份证号是否合法,对btn_confirm 控件添加do_register()函数。进入登录界面输入身份证号和密码即可登录。在LoginDialog 类中do_login()函数用于判断身份证号与密码是否已注册且匹配,do_register()函数用于登录系统,新用户、密码输入错误、身份证号不合法等均无法登录系统且予以提示。注册登录模块流程如图2 所示。

2.2 病人信息管理模块

登录成功后进入病人信息管理界面,包括病人姓名、性别、身份证号、科室、病区等基本信息控件,查询条件分为必填项和选填项:当必填项查询到的数据有重合时,可以勾选其他查询条件,__search()函数用于条件筛选,当勾选选填项则会在Document 中查询是否符合。下方有btn_query、btn_clear、btn_record,btn_listen 4 个按钮,在PatientMangeWidget()类中初始化data_name、data_card、data_zone_index 等参数,为各控件添加Function()类中定义好的函数实现参数对应。为btn_query、btn_clear、btn_record、btn_listen 分别添加do_search()、clear_search_form()、do_log_patient()、do_voiceAssistant()函数实现查询、清空界面数据、打开录入界面、打开语音助手界面的功能。QTableWidget 控件用于显示病人信息,refresh_table()函数中定义了住院号、科室、病区、姓名、性别、生日等QTableWidget-Item,分别传递对应参数,病人信息最后一栏设置了治疗管理操作,为btn_edit 添加do_manage_patient_treatment()函数,可打开治疗档案管理界面查看病人治疗记录,辅助医生了解患者的治疗详情。最下方可选择病人信息显示页面(见图3)。

Fig.2 Registration and login process图2 注册登录流程

相关核心代码如下:

Fig.3 Patient information management interface图3 病人信息管理界面

2.3 病人登记模块

当点击录入按钮可在录入界面输入病人基本信息,如图4 所示,添加科室、病区,填写病人症状、治疗方案,最后点击确定数据,将数据保存便可在主页面中查询。在Log-PatientDialog()类中do_save_patient()函数用于判定各控件信息输入是否符合设定规则,如姓名为2~32 个字符,基本信息控件必填,当输入有误或为空则出现弹框提示。定义data 数据字典存放数据,将参数传递给其他类。manage_departments()、manage_zones()函数分别打开添加科室、病区弹框。

在DepartmentManageDialog()、ZoneManageDialog()界面类中,refresh_table()函数用户传递界面控件参数、添加QTableWidget 布局。do_save()用于保存编辑后的状态。科室、病区不能重复且不为空,不符合要求时会出现提示。

Fig.4 Patient registration interface图4 病人登记界面

2.4 病人治疗记录模块

如图5 所示,在病人信息管理界面点击btn_edit 进入治疗档案管理界面,该界面包括病人的基本信息及治疗记录,医生可以添加或删除治疗记录。在PatientTreatManage-Dialog()界面类传入doc_id 参数对当前病人治疗信息进行操作,在病人信息下方的QTableWidget 空间中显示其治疗记录。add_treat_record()、delete_treat()函数传入treat_id参数,用于添加和删除治疗记录。为btn_add 添加add_treat_record()函数,可进入治疗参数填写界面。Treat-LogDialog()界面类中do_save()函数用于保存填写好的数据,当数据为空时出现提示。

Fig.5 Patient treatment record interface图5 病人治疗记录界面

2.5 语音助手模块

语音交互前期简称为IVR(Interactive Voice Response),即语音互动式应答,随后在人工智能和模式识别技术的影响下,自然的交互方式开始逐步在各方面进入大众视野[15-16]。如慢性病管理语音机器人可以与患者进行实时交流和沟通,进行运动、膳食与心理干预、任务推送及效果评估等慢病健康自我管理工作[17]。基于此,该软件系统设计了语音助手功能,旨在辅助医生治疗并提高工作效率。语音交互包括语音输入、语音识别、语义理解、语音合成、语音播报等环节[18](见图6)。

本文采用的语音识别技术采用百度语音平台,相比于其它语音识别方式,百度语音具有一系列优势。2015 年,百度公司宣布在噪音值轻微环境中,百度语音识别技术的准确率已达到97% 以上。2017 年,百度发布百度AI 开放平台[19],其识别精度较高、平台开源,应用广泛[20-21],可识别中文、英语、粤语和四川话。首先在官网注册,获取API Key、Secret Key 以及离线SDK 工具包。语义理解和语音合成利用图灵机器人平台,需要在官网注册获取urls、key 以及api_key。将百度语音识别的语音结果传到图灵机器人中,图灵机器人在对语义进行理解后可以作出回答。在图灵机器人中可以设计自定义回复,建立辅助医生治疗的疾病类型库及相关知识库以辅助医生诊断,当医生需要了解时即可启动语音助手。在SpeechDialog()界面类中调用function.py 中创建好的MyThread、VoiceThread 线程类,添加pyaudio 库用于访问麦克风阵列、扬声器。在MyThread线程类中定义run()函数用于执行子线程、获取语音信号并发给界面。在Function()类中get_file_content()函数用于获取语音字节码,lic()函数用于识别语音并转为文字。在VoiceThread()线程类中,run()函数用于获取图灵回复内容并转为语音,将信号发给界面。在MyDialog()界面类创建界面,定义初始化函数init_gui()、界面显示函数create_gui()、语音按钮事件listen()函数等。为btn_listen 添加listen()函数,监听树莓派的麦克风阵列是否有语音事件发生。

Fig.6 Voice assistant interface图6 语音助手界面

相关核心代码如下:

3 结语

本文基于Pycharm 和PyQt5 设计出一款集合语音助手功能的多模块、交互性强、操作简便的超短波治疗仪软件系统,主要包括注册登录模块、病人信息管理模块、病人登记模块、病人治疗记录模块和语音助手模块。

目前对超短波治疗仪产品的研究,大都只有注册登录模块和部分病人治疗记录模块,并且医生无法及时获取患者的过往治疗史。本文设计的超短波软件系统很好地解决了上述问题,不仅可将患者及治疗仪数据同步保存到MySQL Server 数据库中,而且基于百度语音及图灵机器人平台实现了语音助手模块,帮助医生通过对话形式快速获取超短波治疗仪、疾病类型介绍等信息,改善了传统超短波治疗仪数据保存滞后的情况,极大减轻了医护工作者的工作负担。未来可在该软件系统的基础上引入多线程技术进而提高软件运行效率,为后期该软件在医院等落地应用奠定基础。

猜你喜欢
身份证号超短波树莓
超短波联合穴位按摩治疗Ramsay-Hunt综合征的临床研究
温针灸配合超短波治疗腰椎间盘突出症的疗效观察
老师情
作品赏析(3)
基于树莓派的骑行智能头盔设计
基于树莓派的远程家居控制系统的设计
机载超短波电台邻道干扰减敏特性建模与评估
航空超短波通信链路余量分析系统设计
响应面法优化红树莓酒发酵工艺
《网印工业》关于作者投稿同时提供身份证号的通知