APP下载

基于区块链的住院申请系统

2019-08-12朱祁凤

电脑知识与技术 2019年16期
关键词:智能合约区块链

朱祁凤

摘要:传统的住院申请流程由人工登记,按时间顺序安排床位,由于医疗资源紧缺,存在排队不透明的情况。该文设计并实现基于区块链的住院申请系统,保证入住顺序按申请的先后顺序排列。系统采用以太坊区块链技术,使用智能合约处理排队信息。通过管理页面录入住院信息,将入院申请基于时间戳保存在区块链中,患者可通过浏览器查询区块链中的床位情况。系统安全可靠,提高了医疗信息透明化水平。

关键词:区块链;智能合约;入院申请系统

中图分类号:TP309.7     文献标识码:A

文章編号:1009-3044(2019)16-0027-02

开放科学(资源服务)标识码(OSID):

Abstract: The traditional hospitalization application process is manually registered and beds are arranged in time sequence. Due to the shortage of medical resources, there is a potential threaten of dealing the application without time order. This paper designs and implements an application system for hospitalization based on blockchain, which ensures that the order of admission is arranged according to the order of application. The system adopts the blockchain technology and uses smart contract to process queuing information. By inputting the hospitalization information into the management page, the application is saved in the blockchain based on the timestamp. The patients can inquire about the bed condition in the block chain through the browser. The system is safe and reliable, and improves the transparency level of medical information.

Key words: blockchain; smart contract; application system

1 背景

随着国家大力发展城镇化,人口日益向城市集中以及人口老龄化的发展趋势,医疗供给侧资源日益紧张。尤其在住院床位供给方面挑战很大,病人通常提交住院申请多日之后才能匹配到床位。传统的床位安排由护士人工登记,根据病人申请入院时间先后顺序进行匹配,缺乏公平透明的操作环境,可能存在中途加塞病人的情况。

近年来,区块链在医疗领域应用的讨论越来越多[1-3]。区块链技术的数据链本质上是单链表,单链表分布式保存在区块链节点上,数据不可篡改。本系统基于以太坊区块链技术,采用智能合约记录病人申请住院的信息,实现医疗住院申请的公平和透明化。

2 区块链技术简介

区块链由中本聪在2008年提出[4]。重点研究并解决了双重支付的难题,比特币使用去中心化的点对点网络记录数据。每笔交易利用哈希算法通过工作量证明保存在区块链上。每一个区块保存上一个区块的哈希值等数据,见图1。为了降低存储空间,交易信息使用Merkle树进行哈希,区块链头部只有树根的值。以太坊[5]是基于区块链技术的平台,提供了智能合约的编写与运行功能。

3 智能合约设计与实现

智能合约使用solidity撰写,solidity与其他面向对象编程语言类似,具有属性与方法。使用智能合约可以取代传统的后端架构,例如PHP+MySQL架构可以由智能合约替代。根据实际需求,设计智能合约的结构如图2所示。

智能合约中约定了管理员和患者的信息, current_num是当前申请队列的值。系统提供了insert_info、next_patient、get_current_num和get_queue_length接口。insert_info由医院录入病人排队信息,如果不是医院的钱包地址,信息无法录入,实现传统的权限控制功能。如果需要通知下一位病人,则调用next_patient接口,接口会返回需要通知的病人信息。当前的排队情况可以查询get_current_num和get_queue_length接口。合约编写完成并进行本地测试后,使用truffle部署到以太坊网络中。本文部署编译完成的智能合约到测试网络,测试一段时间正确后可以部署到去中心化主网络中。

4 系统架构

系统架构如图3所示,系统主要实现数据的增加与数据的获取功能。数据库基于去中心化以太坊区块链,部署智能合约保存并处理患者数据。人机界面采用B/S架构,用户使用浏览器进行数据交互。权限控制使用metamask钱包。使用metamask钱包不用安装全功能以太坊客户端。metamask钱包类似支付宝,自身有密码管理手段,同时可以授权本系统更改区块链中的数据。传统的web应用和以太坊区块链通信采用JSON-RPC协议,为了简化开发难度,使用web3.js库,web3.js封装了JSON-RPC协议,降低了使用难度。Web应用如果想与以太坊通信,需要获得至少一个以太坊节点,通过以太坊节点进入整个以太坊分布式网络。这里采用infura提供的节点。前端采用前后端分离的设计思想,使用vue.js设计web应用。

当医院登记信息时,输入密码登录metamask钱包应用,在管理页面输入患者信息后,发送交易数据给智能合约,将患者信息保存在区块链之中。智能合约收到数据时检查发送方的钱包地址,如果有权限,才能增加数据。患者在手机、网页中打开查询网页,点击查询,信息会通过JSON-RPC远程调用服务器的获取函数,获取函数通过web3.js以及infura从智能合约中获取患者队列信息,获取信息后返回给查询网页。

5 系统实现

使用jayson和web3.js等技术开发JSON-RPC服务供查询页面调用。查询页面是单页面应用,如图4所示。点击查询按钮就可查询当前排队信息,由于数据从区块链中获取,安全可靠。数据更改仅可由医院操作,界面如图5所示,采用Vue.js和Ant Design of Vue框架搭建。可以增加和通知下一个病人,更改区块链数据时,metamask会跳出授权界面,只有授权后才能更改区块链数据。每一次数据操作都有据可循,避免了人为因素导致的不透明现象。

6 总结

本文基于区块链技术,部署智能合约保存并处理患者数据,使得入院次序按照时间顺序排列,具有不可更改性。本文还存在一些不足,在保存患者数据到区块链中时,信息没有加密,虽然查询页面进行了隐私控制,但还是存在一定风险。系统应与医院内部系统联合提供服务,将患者数据加密后传到区块链,保障患者隐私。

参考文献:

[1] 黄永刚. 基于区块链技术的电子健康档案安全建设[J]. 中华医学图书情报杂志, 2016, 25(10): 38-40.

[2] 周辉, 杨阳, 李卫东. 区块链在医疗信息化领域的应用展望[J]. 中国数字医学, 2018, 13(4): 115-116, 125.

[3] 黄建华, 江亚慧, 李忠诚. 区块链在医疗行业的应用前景[J]. 医学信息学杂志, 2018.

[4] Nakamoto S. Bitcoin: a peer-to-peer electronic cash system[EB/OL]. (2018-10-31)[2019-04-20].https://bitcoin.org/bitcoin.pdf.

[5] Gavin Wood. Ethereum: a secure decentralised generalised transaction ledger[EB/OL]. (2019-04-17)[2019-04-20].https://ethereum.github.io/yellowpaper/paper.pdf.

【通聯编辑:谢媛媛】

猜你喜欢

智能合约区块链
农产品供应链金融信用体系框架设计
区块链技术在互联网保险行业的应用探讨
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
用“区块链”助推中企走出去