基于区块链的冬季项目远程支援平台架构设计
2022-07-19王小伟吕友辉
王小伟,吕友辉
(1郑州大学体育学院信息管理中心 河南 郑州 450052)
(2郑州澍青医学高等专科学校 河南 郑州 450064)
0 引言
传统的信息系统大都采用中心化部署,这种部署方式对于中心节点依赖性较强,一旦中心节点出现故障或者遭到攻击,将会导致整个系统瘫痪,极端情况下可能会造成数据丢失,造成巨大的损失。而且,运动员在遇到运动损伤的时候,希望能第一时间接受治疗,可能会需要不同医院的医生共同会诊,因此需要历史伤病记录是互信的、可查的,这样可节约诊疗时间,避免不必要的重复检查及医疗费用的额外支出。运动员伤病信息属于重要的战略资源,不允许被对手窃取,因此对外需要匿名,对内则需要如实准确记录,不可篡改。这样在运动员康复训练、备战过程中才能有的放矢,进行有针对性的训练与治疗。如何保证伤病运动员诊疗信息可靠、可信,是迫切需要解决的问题。
区块链[1]是一种分布式账本技术,每个节点都存储一份数据,具有高冗余性、去中心化、高安全性等特点,可有效避免因中心节点遭受攻击或因管理不当而造成的大规模数据丢失或泄露等问题,十分适合用来存储重要数据。徐健等[2]提出了一个基于区块链技术的实时安全医疗记录解决方案(RSMR),在数据存储过程中利用星际文件系统(IPFS)进行数据存储,并给出了详细的智能合约方案。高梦婕[3]根据病人匿名就医的现实需求,提出了一种基于区块链的医疗数据签密方案,并给出了系统模型和安全模型,进行了安全性证明和性能分析。张利华等[4]提出了一个基于联盟链的去中心化的双链存储模型,用于存储铁路沿线监测数据。从各类文献可看出,将区块链技术用于远程支援平台具有很好的技术基础。
本文尝试构建一个基于区块链的运动医疗与康复远程支援平台,将运动员历史诊疗信息存储到区块链平台,利用区块链技术的不可逆、防篡改等特性,解决在远程诊疗过程中存在的互信问题及单点故障问题。
1 相关概念
1.1 区块链基本原理
区块链(blockchain)是一种按照时间顺序排列的链式结构[5],运用了非对称加密、哈希函数、时间戳、共识机制、点对点网络等技术,具有去中心化、不可篡改、可追溯、全程留痕、公开可验证、代码开源等特点。
传统分布式数据库由中心服务器维护数据,对中心服务器依赖性较强,一旦中心服务器出现故障将导致所有服务中断,还可能造成数据丢失。而区块链中数据由所有节点共同维护,每个节点都保存一份完整的数据,即便某些节点发生故障也不会导致数据的丢失,所有参与节点以共同记账的方式来维护数据库。区块链节点之间通过共识算法来保证数据的一致性[6],通过计算哈希值是否发生变化来判断数据是否被篡改。
1.2 区块链的结构
一个区块由区块头和区块体两部分组成[7-8]。区块头中保存的信息有前一区块哈希、版本、时间戳、难度、随机数、merle根。区块体中保存的是每笔交易及其哈希值构成的merle树,区块之间通过将前一区块的hash值添加至后一区块的区块头中,从而形成了链式结构,见图1。
2 冬季项目远程支援平台需求分析
基于区块链的冬季项目远程支援平台,主要目的是为运动员远程诊疗提供平台支撑,当队医需要场外医生远程协助时,能够随时开启远程会诊模式,为专家远程会诊提供平台支撑。同时为使专家团队能迅速了解运动员历史伤病情况,需要能够及时准确地获取到伤病运动员的历史病历记录,以便伤病运动员能快速获取诊疗援助。考虑到运动员的特殊性,诊疗信息需要安全、可靠、保密,计划采用区块链技术来进行诊疗数据的存储,链上数据不可篡改,可信可靠。在远程诊疗过程中的数据不必上链接,只需要存储在本地服务器即可,这样可节省链上空间。
2.1 平台功能模块
根据前面描述,冬季项目远程支援平台主要为冬季项目训练队伍提供远程医疗支撑,主要使用者为队医、运动员、教练员及场外医生团队。业务功能划分见图2。
整个系统分为5个功能模块:注册/登录模块、运动员病历管理模块、处方跟踪模块、远程会议管理模块、后台管理模块。
(1)注册/登录模块:该模块为不同身份用户提供相应入口,包括用户注册、登录等功能。考虑到安全性,不允许匿名注册,所有用户通过小程序实名认证,认证后赋予相应角色。
(2)运动员病历管理模块:该模块为伤病运动员提供病历管理。该处病历通常由队医发起,对运动员进行伤病诊疗,将诊疗处方及就诊情况存储到区块链上;当运动员需要场外医生协助诊疗的时候,可通过授权场外医生查看历史病历处方。个人信息模块主要是提供查阅或修改患者信息功能。
(3)处方跟踪模块:该部分主要是队医根据运动员伤病情况开具处方,如果涉及用药,还需要反兴奋剂专员的审核,如果需要场外医生协助,还需要发起远程会议进行多方会诊。
(4)远程支援会议管理模块:当队医需要场外医生协助时,可实时发起线上会议进行远程会诊,这部分内容属于过程性内容,通常占用空间会比较大,不适合存储到区块链上,因此该部分内容保存到链接下,当需要查询的时候,可以在链接下查询。
(5)后台管理模块:主要包括用户管理、团队管理、场外医生管理等功能。
2.2 平台模型框架
根据前面功能分析,运动员诊疗信息需要存储到区块链上。结合公有链、联盟链特性,运动员诊疗信息属于重要的战略资源,不适合存储在公有链上,因此选择联盟链,联盟成员要有准入机制。通常的做法是创建一个通道,邀请联盟内成员进入该通道,信息对于联盟内成员是公开透明的,但对于通道外的其他成员是无法访问的,这样可保证通道内是一个隔离的账本。有时候,即便是同一个联盟内也不希望别人轻易获取到伤病运动员的信息,因此伤病运动员诊疗信息在上链之前可采用非对称加密算法,对诊疗信息加密后上传。诊疗信息的解密,只有伤病运动员自身的密钥才能解开,这样就充分保障了伤病运动员的个人隐私不被泄露。远程支援平台的逻辑结构图见图3。
表示层:即前端页面,针对不同登录用户,表示层通过导航栏引导,帮助用户完成相关业务操作。
业务逻辑层:涉及具体业务逻辑,包括注册登录管理、运动员病历管理、处方跟踪、远程诊疗会议管理等操作,属于网站的后台服务。
数据访问层:主要为区块链网络和本地的数据库设计数据交互接口。一方面与区块链网络进行数据交互,另一方面则通过调用 MySQL客户端操作本地数据库。
3 平台模块设计
冬季项目远程支援平台基本功能实现跟本地平台大部分相同,唯一不同的地方就在于诊疗数据是存在区块链上的,需要到区块链上来存取数据。本部分对系统主要部分进行模块设计。
3.1 注册/登录模块
如图4所示,用户在注册时,通过调用SDK执行智能合约,获取链上身份,注册完成将得到唯一的加密地址作为用户ID,以及用户的公私钥对(PK,SK),在客户端上还将获得一个存放个人病历信息的文件夹UserFold,用于存放用户在本次诊疗过程中产生的各类电子记录EMR(Electronic medical records)。初始用户结构体如式(1)所示:
用户正常登录时,通过调用智能合约,可根据ID到区块链上查询个人信息及加密的电子病历。
3.2 运动员病历管理模块
病历管理模块涉及5个实体,即队医、运动员、教练员、区块链、场外医生。场外医生和队医的角色相类似,教练和运动员的角色类似,他们的角色见图5。
队医负责生成、发布运动员的诊疗记录到区块链,运动员可以从链上检索电子诊疗记录并授权给场外医生查看,场外医生可以在链上检索经授权的电子记录并诊断,同时将本次诊疗记录发布到链上。教练员经过授权可查询运动员的诊疗记录。
队医:相当于医生,收到运动员请求后,为运动员诊断并生成伤病诊疗记录,经加密处理后上传到链上。该角色在提供诊疗服务时可要求患者提供历史伤病记录,并从区块链检索相关数据进行验证。
运动员:即患者,是个人伤病诊疗信息的拥有者。在接受队医或场外医生诊断后获取伤病诊疗记录的相关证明凭证,利用此凭证验证电子诊疗记录的有效性。在更换其他医生时,患者可提供历史电子诊疗记录获取更准确、更高效的医疗服务,但为了避免电子诊疗记录被恶意传播,患者不直接提供电子诊疗记录,而是利用加密处理过的电子诊疗记录。
教练员:具有运动员诊疗数据访问需求,访问时需要获得权限。
区块链:采用联盟链,通过创建通道,形成相对隔离的联盟账本,联盟内所有节点共同维护账本,运动员将在区块链上完成匿名化就医。
3.2.1 诊疗信息上链
图6为诊疗信息上链过程,队医为受伤运动员诊疗结束后,形成电子病历EMR,用受伤运动员的公钥PK加密诊疗信息,加密后得到一个唯一文件HDF,加密过程用公式(2)表示:
队医或医生在注册后也将获得自己的加密地址作为唯一ID及自己的公私钥对(PKd,smd),对于医生的公私钥,主要用来签名及验证身份。
队医在诊疗结束后要为本次诊疗服务负责,因此需要队医用自己的私钥smd签名,用于身份验证,之后将加密后的文件HDF及EMR保存至患者文件夹UserFold,等待上传至区块链。签名过程用公式(3)表示:
3.2.2 诊疗信息查询与下载
队医或医生在收到伤病运动员请求后,根据运动员提供ID在区块链上查询运动员伤病诊疗信息LockFile,这时队医/医生可以查到运动员诊疗信息,但是无法解密,需要获得受伤运动员的授权才能够解密。在解密前,还需要验证医生的签名igd,验证通过后可得到原文件EMR,见图7。
验证签名过程用公式(4)表示:
解密公式为式(5):
3.3 处方跟踪模块
处方跟踪流程见图8,队医在收到运动员请求后,首先给出初诊结果,如果队医能够处理,那么可以直接开出处方,如果需要场外医生或专家远程协助,那么需要预约,发起在线诊疗会议,会议结束后,根据专家意见开出处方。如果处方中没有药品,那么可直接确认处方。如果处方中含有药品,那么还需要反兴奋剂专员来确认是否符合反兴奋剂要求,如果不符合,那么需要队医重新开具处方;如果符合要求,则由队医确认处方,流程结束。
3.4 远程会诊模块
远程会诊模块的实现借助第三方声网接口,完成实时视频会议功能,视频会议系统支持实时通话、实时视频,还可以发送图片、小视频、语音等,支持异步会议,这样可方便因国内外时差不同而导致的不便。同时为了保障视频信息的长期存储以备后查,将视频会议过程信息拉取到本地服务器,在需要查看时可通过查看历史记录来进行查阅。
3.5 后台管理模块
后台管理模块主要包括用户管理、团队管理、场外医生管理等功能。用户管理主要是系统用户、小程序用户,用户可能存在多个角色。团队管理主要是运动队管理,通常一支运动队包含领队、队员、教练、队医、反兴奋剂专员等。场外医生管理:主要是当队医需要场外协助时,可能会需要不同医院的医生共同来会诊,才能最终下结论,因此场外医生管理,其实包含了医院管理、医生管理、科室管理。
4 结语
本文设计了一个基于区块链的冬季项目远程诊疗支援平台,用于解决伤病运动员的远程会诊问题,根据业务需求设计了5个功能模块,给出了系统的逻辑结构模型,对系统关键模块的流程进行了详细设计。为保障运动员诊疗信息的安全可靠可信,使用了区块链技术,一方面解决传统的集中存储带来的单点故障问题,另一方面将运动员病历信息存储到区块链上,任何人不能篡改,通过密码技术使得只有经过授权的教练、医生才能够查看特定的信息,充分保障了信息的安全可靠。同时区块链技术还可解决信息的互信问题,当需要不同医院的医生共同会诊时,需要历史伤病记录是互信可查的,具体实现各项功能,真正为运动队提供服务。