基于区块链的可视化听诊与电子病历系统

2021-04-13 08:46徐浩恺谭惠东叶一阳郑桂锋石皓文
电脑知识与技术 2021年5期

徐浩恺 谭惠东 叶一阳 郑桂锋 石皓文

摘要:传统听诊器受医生临床经验等主要因素影响严重且纸质化的病历难携带、易丢失,存在局限性,大大影响医疗质量。针对这种情况,本文设计了一个基于区块链的可视化听诊与电子病历系统。基于区块链的可视化听诊与电子病历系统可实现听诊可视化以及电子病历的书写和查看,采用区块链技术可以实现医疗病历的跨地区、跨平台查阅,同时加密技术也为患者电子病历的安全性提供了保障,有效帮助提高医疗效率。

关键词:区块链技术;可视化听诊;电子病历;数据库

Abstract: Traditional stethoscopes are severely affected by doctors clinical experience and other major factors, and the paper-based medical records are difficult to carry and easy to lose. There are limitations, which greatly affect the quality of medical care. In response to this situation, a visual auscultation and electronic medical record system based on blockchain was designed. The blockchain-based visual auscultation and electronic medical record system can realize the visualization of auscultation and the writing and viewing of electronic medical records. The use of blockchain technology can realize cross-regional and cross-platform access to medical medical records. At the same time, encryption technology also provides the security of patients' electronic medical records. Sex provides a guarantee and effectively helps improve medical efficiency.

Key words: blockchain technology; visual auscultation; electronic medical records; database

1 引言

目前,僅用耳朵听的传统听诊器,受医生临床经验等主观因素影响严重,因此设计了可视化听诊器并增加了心率采集功能。同时纸质化的病历存在局限性,它不仅使得患者难以携带,也容易丢失。因此设计了基于javaweb的电子病历系统。然而该系统无法实现跨平台的医疗病历查阅,同时由于数据存储在医院的数据库中,这种集中存储容易受到黑客攻击而导致大量病历泄露,区块链技术可用于解决这一问题。其去中心化特点可以实现医疗病历的跨平台查阅,同时加密技术也为患者电子病历的安全性提供了保障,因此建立了基于区块链的电子病历系统。

2 设计方案

可视化听诊与电子病历系统可实现听诊可视化以及电子病历的书写和查看。可视化听诊部分以STM32主控板、呼吸音采集模块、脉搏采集模块、显示模块、硬件滤波与放大模块共同组成,可实现数据的采集、软硬件滤波、模数转换、实时显示等功能。在可视化听诊过程中,摄像头通过opencv实时记录。医生通过可视化听诊端对病情做出判断后,将病历书写到基于javaweb的电子病历系统中。该系统包含前端、后端与数据库端,将用户区分为患者与医生,并给予不同权限实现不同功能。在就诊完成后,患者可以通过区块链的以太币给医院支付看病费用。作为电子病历系统的补充,同时设计了基于区块链的电子病历,并将其分为区块链层与系统实现层,通过命令行可实现电子病历的基本操作。其总体框图如图1所示。

3 硬件设计

3.1 信号采集及显示总体设计

信号采集及显示部分设计思路是以STM32F103C8T6作为主控,由传感器模块、硬件预处理电路、硬件放大电路、显示模块共同组成。由呼吸音传感器采集的呼吸音数据、脉搏传感器采集心率数据,经过滤波、放大以及AD芯片进行模数转换后进行卡尔曼滤波、平均滤波、限幅滤波等处理,将处理完的数据实时在LCD显示屏幕上显示。信号采集即显示部分框图如图2所示。

3.2 呼吸音传感器

因为采集的是呼吸音信号,对传感器灵敏度要求高,而HKY-06F呼吸音传感器具有高可靠性、高灵敏度、具有良好的抗噪性等特点,能够采集更为微弱的信号,同时自身对信号的处理能力更强,更适合用来采集呼吸音,因此选用HKY-06F呼吸音传感器。

3.3 心率传感器

传统的脉搏测量共有三种方法:心电信号提取法、压力传感器波动计算法、光电容积法。心电信号提取法、压力传感器波动计算法采集会限制患者活动,患者身心的不适将因长时间的使用而出现。相较之下,光电容积法测量脉搏其佩戴简单,因此本次设计采用了以光电容积法为基本原理的PULSE SENSOR传感器,它是一款光电反射式模拟传感器,通过硬件将信号放大了330倍。

3.4 信号采集与放大电路

信号放大电路如图3所示,采用运放差分放大电路,在输出端连接了一个减法器以及偏置电阻将负信号拉高。运放采用LM358芯片,该芯片是一个双运放芯片,可以承受3V-30V电压,因此不需要升压。通过第一个LM358芯片的两个运放,提升了信噪比。电路中的相关电阻均严格对称,这使得电路对共模信号几乎没有放大作用,因此共模电压增益为零。电路中R2=R3、R9=R10,两级差模总增益为:

因为信号通过示波器测试幅值在50mv左右,因此对它进行11倍放大,即选取R2=R3=50K,R1=10K。

4 软件设计

4.1基于区块链的电子病历设计

DApp的开发共设计有三层:用户层、区块链层以及系统实现层。其设计框图如下图4所示。由于自身技术的限制,仅实现了其中区块链层以及系统实现层。

4.2私有链的建立

区块链层包含用于用户与在区块链上运行的DApp交互的代码或机制。以太坊官方提供了两种网络环境,包括主网络以及测试网络。测试网络中又包含了Ropsten、Kovan、Rinkeby、Doerli等测试网络,其网络环境与主网络相同,且均有大量交易信息,也有矿工进行义务的提供挖矿服务。主网络是真正有价值的以太坊网络,其具有全球化的特征,是部署在Internet上的。其智能合约的代码,区块的产生等都可以清晰地查到,但速度较慢。测试网络专供用户来开发、调试和测试使用。如果要进行智能合约的开发,测试网络足以应对。

本私有链的建立是基于以太坊最热门的客户端geth建立的。要运行私有链,首先要定义一个自己的创世区块,并写在一个json格式的配置文件中。其中定义有独立的区块链网络ID,该ID不能为1,因为1是以太坊主网络的ID号。本次的chainId设置为15。同时需要设置区块链挖矿的难度,预置账号以及账号的以太币数量,矿工的账号、创世块时间戳、上一个区块的哈希值(因为是创世区块,所以是0)以及对GAS消耗总量的限制。之后即可通过命令行启动私有链,并将其挖矿信息输出到日志中。在自己建立的私链中,我们可以通过person.newAccount(“password”)来创建账户与输入密码,创建完成后将返回一个账户的地址。可以通过getBalance接口查询到用户的余额。同时通过miner接口可以对矿工进行操作,如挖矿以及挖矿停止,同时我们还可以通过miner.setEtherbase来设置挖矿的账户。通过eth.sendTransaction接口,可以进行转账操作。但是一旦涉及转账操作,就需要对账户进行解锁。

4.3 区块链电子病历智能合约设计

系统实施层主要做的是智能合约的开发。智能合约是DApp的重要组成部分,因为它们用于执行基本操作。电子病历智能合约中包含三个角色,患者、医生以及医院。患者可以注册以及修改自身信息,在医院看病时,可以给医生授权,书写自己的病历,并在看病结束后,直接通过区块链以太币进行支付,将钱转账给医院。

首先设置了两个结构体,患者以及医疗病历。患者结构体重包含用户客户端、全称、年龄、密码、性别、联系方式等信息。

患者进入区块链后,首先注册患者账户。通过web3.eth.personal.newAccount()创建一个以太坊账户,之后通过调用智能合约中的SignupPatient注册患者账户信息。输入的信息,首先需要进行一层验证,查看当前的输入的人是不是当前的患者的以太坊用户,这是因为我们的以太坊账户可以同时拥有好几个账户,账户之间可以进行随意的切换,如果当前的输入信息的账户不是患者的账户,则会报错并提示,如果是,则患者信息将存储在患者的结构体中。

患者注册好信息以后,可以通过patients来进行查询。patients是定义的一个映射,输入地址然后将映射到患者的结构体中,因为设置为public状态,所以solidity语言会自动为该变量定义一个get函数,所以外部可以直接查看。如果患者发现输入信息错误,可以通过PaitentUpdate函数直接更改患者的信息。之后患者可以通过SetAdministrator赋权给医生的账户,这样通过医生的账户,就可以直接对患者的病历进行更改了。同时患者的账户是无法对病历进行更改的。医生获得了修改权限以后,通过医生自己的账户,就可以输入患者的病历。患者的病历也被定义成了一个结构体,其中包涵看病的时间,患者的症状以及给患者开的药物。医生登录自己账户后,可以通过调用MedicalReportAdd函数,输入的信息后,首先会验证医生的账户是否是患者给予病历书写权利的人,如果是,则将输入保存在患者病历结构体中,如果不是,则报错并提示只能有医生才能输入信息。之后可以通過medicalreports对病历信息进行输出,医生、患者、医院均可以看到该信息。medicalreports与patients一样,都是一个映射,将地址映射为患者的账户,通过设置为public状态,自动生成了get函数以便外部调用。在看病完成以后,用户通过kill函数注销本次登录。之后患者可以通过以太币转账给医院以实现患者的看病费用的支付。以太币也是实际在国际市场上流通的数字货币,目前一个以太币价值1200美元。可以通过sendTransaction函数来进行转账操作。

5 结束语

基于区块链的可视化听诊与电子病历系统,在功能实现上,设计主要包括有两个部分,信号采集及显示端、基于区块链的电子病历端。采用可视化听诊,采集呼吸音信号以及心率信号,并对其进行可视化,安全、可靠、便携、性价比高,能够减少医生的主观因素影响。基于区块链的电子病历设计解决了因不同医院医疗系统不同,患者跨院诊断后数据无法进行查阅的情况,其具有维护成本低、义务连续性高等特点,同时可以保护患者隐私不被泄露。

参考文献:

[1] 郭俊飞.基于STM32的可视化呼吸音听诊系统开发[D].大连:大连理工大学,2018.

[2] Technology - Blockchain Technology; Study Data from National University of Science and Technology Update Understanding of Blockchain Technology (Using Blockchain for Electronic Health Records).2020.

[3] 欧秀芳.区块链技术在医药领域的应用分析[J].中国市场,2020(27):166-167.

[4] 韦智勇,周立广.基于区块链的电子病历存证系统设计与实现[J].软件工程,2020,23(9):56-58.

[5] 余海波.基于区块链的数据分布式存储安全机制研究[D].上海:华东师范大学,2020.

[6] 施剑锋.心音呼吸音可视电子听诊系统[D].杭州:浙江大学,2007.

[7] 汪昱卿. 基于MVC的医院信息管理系统设计与开发[D].上海:复旦大学,2012.

[8] Bijon Kumar Pramanik.Blockchain-based Application of Reward Point Exchange[D].北京:中国地质大学(北京),2019.

[9] Zhou L,Fu A M,Mu Y,et al.Multicopy provable data possession scheme supporting data dynamics for cloud-based Electronic Medical Record system[J].Information Sciences,2021,545:254-276.

[10] 吉文帅,孙华妤.基于GIS的电子病例管理系统研究[J].信息技术与信息化,2016(11):82-83,86.

【通联编辑:梁书】