阎玉婷,李雨红,郑水飞
(江西中医药大学计算机学院,南昌 330004)
中医药是我国重要的卫生、经济、科技、文化和生态资源,传承创新发展中医药是新时代中国特色社会主义事业的重要内容[1]。随着中成药使用规模的不断扩增,药品说明书不明确、用药不规范、安全性评价体系不完善等问题逐渐显现,且目前针对中成药多背景数据而建立的数据库和应用系统较少,很多中成药信息得不到及时的更新,不同数据之间的关系也难以得到很好的挖掘利用,这一定程度上给患者的健康安全带来隐患,导致用药不良事件的发生[2]。
基于此,本文构建中成药多背景数据协作共享与可视化系统,旨在通过中成药数据资源协作共享及可视化方式增强中成药数据管理,降低中成药不良反应发生率,实现信息交流与共享,积极为中成药使用规范化和中医药行业发展提供服务。
中医药信息资源所涉及的范围与学科越来越广泛,海量的中医药数据通过互联网、各类医疗终端设备等渠道产生,围绕这些数据的采集、分析、应用而展开的研究也日益丰富。为了实现面向用户临床与科研需求,建立多学科、多类型的个性化、特色化中医药信息数据存储与研究利用,更好地服务于读者和用户[3],中医药信息科研工作者们一直以来都想要寻找便捷、有效的方式来对这些信息资源进行管理,来实现数据资源的有效利用。
目前,我国已经建立了一些中医药科技文献数据库和中医药事实型数据库[4],这些数据库是我国中医药信息数字化的成果,为中成药的应用和研究提供了有力支撑。但这些数据库也存在以下问题:一是数据内容单一化明显,具体表现为数据来源主要是医院信息科和相关研究机构,且这些数据大多是属于同一类型,如中成药本身具有的属性:药品名称、成分、主治等,缺乏流通信息,如广告招商等。二是数据获取和更新不及时,目前中成药数据信息的标准化水平不一,导致数据清洗复杂程度增加,工作量增大,进而降低了数据更新的及时性。三是数据展示直观性不好,数据的呈现方式主要是表格和列表,难以对数据进行直观的理解和分析。
在计算机分类科学中,利用人眼的感知能力对数据进行交互的可视化表达以增强认知的技术,称为可视化[5]。可视化不仅仅是对海量数据的简单描述,也能通过数据挖掘技术,整合各类资源,帮助人们挖掘到不可见或难以直接显示的数据关系,从而提高数据分析、决策的能力以及数据价值转化的效率。随着数据可视化在中医药领域的研究、探讨、应用日益增多,暴露出的问题也随之增多,主要为以下几个方面:①不同领域可视化的表示方法各不相同,难以提出规范性的可视化方法;②随着数据网的复杂程度越来越高,单一的可视化方法难以表现出数据的内在特性与价值;③中医药数据之间多存在强关联,不同的处理方式、显示程度会导致可视化结果不明显[6]。基于此,许多学者尝试对可视化进行研究和探索,例如:肖永飞[7]提出了医学数据三维可视化交互的解决方案;李正等[8]对中药制药过程中运用的数据集成、数据挖掘与可视化技术进行了具体的探讨。
在此基础上,本文论述了如何利用Python爬虫技术和PostgreSQL 数据库,构建涵盖中成药基础信息、技术与标准、流通广告、行业政策等多背景的动态数据库,同时结合ECharts 可视化技术探究数据价值、展示数据关系,以期改善中成药多背景信息孤立现象,为领域专家进一步研究提供数据服务支持。
基于前期的实践调研和文献查阅进行系统需求分析,利用爬虫技术从互联网获取中成药相关数据,对数据进行实体识别、属性提取、整理分析,存入对象关系型数据库PostgreSQL,构建中成药多背景动态数据库;同时采用数据挖掘等技术对数据关系进行多维度探讨,最后利用具有良好扩展性和兼容性的Flask 框架和ECharts 技术实现数据的增删改查、批量导入导出和可视化等功能。系统具体实现流程如图1所示。
图1 系统具体实现流程
根据系统功能需求分析,将数据整理识别出12 个实体,并为每个实体提取相应的属性,以期提高数据的标准化和规范化。系统主要实体间联系E-R 图如图2 所示,系统主要实体的属性见表1。
表1 系统主要实体的属性表
图2 系统主要实体间联系E-R图
系统在用户信息表中专门设置“用户权限”属性,只有拥有相应权限的账号,才能对系统进行操作,以期解决中成药数据库建设过程中出现的数据库完整性、安全性和隐私保护问题。用户权限与功能对应图如图3所示。
图3 用户权限与功能对应图
本文采用“前端页面+Flask 框架后端+PostgreSQL 数据库”的架构设计,系统具有较强的扩展性和可维护性。前端主要应用HTML、CSS、JavaScript 设计Web 前端页面,包括主页、登录/注册、中成药、药典数据、药品招标、相关政策等页面。中成药数据动态采集与可视化系统的实现分为前端和后端两个部分。后端则是使用Python 语言连接数据库,与前端进行数据交互,审核和响应用户的操作,实现中成药数据的分页展示、增删改查、批量导入导出等功能。系统架构和交互流程如图4所示,系统页面结构设计如图5所示。
图5 系统页面结构设计
2.3.1 数据增删改查模块设计
系统在每个中成药数据共享页面都提供了查询功能,用户既可以进行模糊查询,也可以针对某一信息进行精确查询,以便用户更快捷地获取信息。该系统每一个页面提供的查询字段不同,是通过相关性分析和热度分析筛选出对用户而言更有价值的字段,在保证数据有用性的同时,也使系统简洁美观,从而提高用户的使用体验。一般用户和科研工作者可以登录系统查询中成药的处方、功能主治、注意事项等中成药相关技术指标,中成药生产商则可以对药品广告、批准文号、招标信息等流通信息进行查询。
系统在为用户提供中成药多背景数据共享的同时,还允许用户之间相互协作,共同完善数据库系统内的数据资源。但为了保障数据库系统内数据的安全性和系统运行时的稳定性,增加数据、删除数据、修改数据功能只对权限用户进行开放,游客用户和普通用户无权进行此类操作。
(1)添加数据功能:该功能可以帮助用户将来源不同的数据资源整合为可用的数据集,为用户提供更加便捷和高效的数据协作共享服务,用户在输入对应的字段后即可完成对单条数据的增加。
(2)删除数据功能:中成药数据有着较强的时效性,系统中存储的数据可能会随着时间的推移而变得过时或者出现重复存储的情况,用户可以使用删除数据功能来释放存储空间,降低数据冗余。当用户点击删除时,系统会弹出确认提示框,点击“确认”按钮后即可完成删除操作。
(3)修改数据功能:当用户发现某条数据有细微差错或流通信息有滞纳性时,可以使用该功能对该数据进行修改和更新。用户点击某条数据的“编辑”按钮后,系统将弹出该条数据内容编辑框,用户可以对相应字段进行更改,点击更新即可完成对数据的修改。
2.3.2 数据批量导入导出模块设计
为了提高对数据的处理效率,减少手动输入数据的错误率,系统提供了批量导入数据和批量导出数据的功能。用户点击“上传文件”按钮,在弹出的文件选择框中选择已根据字段整理好的Excel 文件,再点击“批量导入”按钮即可完成大量数据的写入。这使得用户不必一条条添加数据,大大节省了时间,提升了协作效率。同时,用户也可以根据需求批量导出数据。用户可以对整个数据库进行下载,也可以先对数据进行条件检索,然后点击“导出数据”按钮将检索结果以Excel 的格式保存到本地电脑,便于对数据进行分发和研究。同样因为考虑到数据安全和系统稳定性,该部分功能也只面向权限用户开放。
2.3.3 数据可视化与应用模块设计
数据可视化可以将数据之间潜在的关系以图表的形式形象直观地展示出来,帮助用户从不同的角度分析和研究数据,使其更好地理解和发现数据的规律和趋势。因此,该系统将爬取到的中成药大数据进行清洗与整合,将有价值的药品数据用不同的ECharts 图表展示出来,为用户提供可视化服务。同时,对中成药成分和说明书进行挖掘,分析中成药中含有的有毒成分、用法用量、不良反应等数据,构建中成药知识图谱,实现对中成药的风险预警,帮助用户做出更安全的用药决策。
(1)查询数据:当用户在页面输入相应的检索条件时,系统通过request()方法获取前端表单传来的各字段内容,连接数据库,通过‘SELECT * FROM’查询语句实现对数据的检索,最后使用render_template()方法将数据传到前端页面完成数据的查询。
(2)添加数据:系统将通过request()方法获取用户在弹出的数据添加框中填写各字段信息,再在后端定义常量来接收这些数据,通过比对数据库,查询是否已存在该条数据,如果不存在,就将数据存入数据库并将其更新到系统页面,否则添加失败。系统添加数据功能页面如图6所示。
图6 系统添加数据功能页面
(3)删除数据:用户进行删除操作时,系统将会弹出一个确认框以供确认,有效地防止用户因操作不当而误删数据的情况。如果用户确认删除该条数据,系统后端将调用相应的remove()方法完成对数据的删除。
(4)修改数据:当用户需要对某条数据进行修改时,可以在弹出的数据修改框中修改数据内容并点击“更新数据”按钮,前端将数据传给后端相应的update()方法进行处理,再将处理结果存储到数据库,同时传回前端对系统页面进行更新,从而完成对数据的修改。
批量导入数据功能主要使用Python 语言的xlrd类库实现。当用户点击“上传文件”按钮把Excel 文件信息传递给系统,后端将接收到文件并通过for 循环完成对文档的扫描读取,最后使用insert into 语句将数据存入对应的数据表中。系统批量导入数据功能页面如图7所示。
图7 系统批量导入数据功能页面
批量导出数据功能主要使用Python 语言的xlwt 类库实现,当用户点击“导出数据”按钮后,响应头会将文件类型传递给浏览器,系统后端使用Workbook()方法创建Excel文件,最后通过for 循环和write()方法将数据写入单元格,完成数据的批量导出。
ECharts 是一款基于JavaScript 的数据可视化图表库,提供直观生动、可交互、可个性化定制的数据可视化图表。它能够兼容绝大部分主流浏览器,可以跨平台流畅运行,并且具备千亿级数据可视化渲染能力[9]。同时ECharts 还支持各种图表相互组合[10],有助于解决因可视化方法单一而难以表现数据的内在特性与价值的问题。
本系统通过对数据关系的挖掘,选取了用户感兴趣的部分,如特殊性药材信息、中成药保护品种信息、中成药广告信息、中成药热词进行可视化展示,页面详情如图8所示。
图8 系统可视化图表页面详情
(1)特殊性药材毒性分析:采用饼状图展示不同毒性的中药材的数量和占比,用户可以点击“查看详情”,进一步查询不同级别含有毒性药材制药量的相关分析。
(2)中成药保护品种剂型:采用柱状图展示中成药保护品种的剂型分布。
(3)全国中成药广告分布:以中国地图为载体,以省份为统计单位,用深浅不同的颜色表示该省份的中成药广告数量,用户可以非常直观地了解中成药广告分布情况。
(4)中成药保护终止日期:将柱状图和折线图结合起来,从多维度展示到达终止日期的中成药保护品种的数量的逐年变化趋势。
(5)中成药热词词云:词语字体越大,索引热度就越高,可以进一步反映当下中成药研究热点。
3.4.1 构建中成药知识图谱
知识图谱是在互联网大数据背景下产生的一种新颖的知识管理与服务模式,能够捕捉并呈现事物之间的关联关系,可以将琐碎零散的知识片段连接起来[11]。知识图谱能将多背景的领域概念整合起来,更好地反映中成药数据中尚未发现的关联性和规律性,为解决中医药领域的“知识孤岛”问题提供了理想的技术手段[12]。同时,知识图谱能够为用户提供全面、准确的中成药数据支持,帮助用户进行用药决策,提高用药决策的准确性和效率。
构建知识图谱最主要的一个步骤就是把数据从不同的数据源中抽取出来,然后按一定的规则加入到知识图谱中,即知识抽取。本文选取中成药名称作为实体结点,以成分、功能主治、用法用量、不良反应和禁忌为一级属性结点,并以其相应的内容作为二级属性结点,运用ECharts 建立中成药知识图谱。以“惊风散”为例,通过知识图谱可以发现惊风散主治腹胀、积食、小儿急惊风等病症,会出现恶心、呕吐、便溏等不良反应。“惊风散”知识图谱如图9 所示。同时,我们用不同的颜色将实体结点和一级属性结点予以区分,并且在知识图谱左上角设置了“自定义展示内容”的功能,以解决知识图谱关联过多结点而影响展示效果的问题[13]。
图9 “惊风散”知识图谱
3.4.2 中成药知识图谱可视化应用
本系统以《中华人民共和国药典(2020版)》[14]收录的83 种有毒中药(以半数致死量(LD50)分级法[15]为依据)建立“大毒”“有毒”“小毒”列表,将用户输入的中成药的成分与三个列表分别进行遍历对比,得到有毒成分,实现中成药成分安全性风险分析功能。同时,将中成药说明书中的注意事项从数据库中提取出来,结合前文构建的中成药知识图谱,将数据展示到页面,从而建立中成药风险预警模块。用户可以使用该模块来检索某中成药的有毒成分以及服用该药时的注意事项,还可以通过知识图谱的形式了解其成分、功能主治、用法用量等信息。“惊风散”的风险预警界面如图10所示。
图10 “惊风散”的风险预警界面
本文讲述了中成药多背景数据协作共享与可视化系统的设计与实现,在调查和分析国内外研究现状的基础之上,运用Python 爬虫技术采集中成药大数据,对数据进行实体识别、属性提取、整理分析,并将其存入PostgreSQL 数据库,构建包括中成药政策、技术与流通等多背景的数据库。通过使用Python 轻量级框架Flask 设计实现系统增删改查等相关功能,应用HTML 页面框架、CSS页面样式、JavaScript等技术进行前端页面设计。同时,为了深度挖掘探讨中成药数据之间的潜在映射关系,除了使用ECharts 可视化图表对数据进行基础展示之外,还构建了风险预警知识图谱,使人们对中成药的成分、用法用量、服用禁忌有更清晰的了解,从而降低中成药不良反应事件的发生率。目前,本文设计实现的系统仍然存在着不足和缺陷,在后续研究中将继续从以下三个方面深入研究:
(1)增强系统数据覆盖面。目前本系统数据库中尚无中成药生产厂家、市场销售等相关数据,后续将通过爬虫技术从互联网中收集或依靠用户的协作共享来建立该部分数据的数据库,进一步提高数据库的完整性。
(2)优化数据库系统结构。随着数据量的增加,后续将严格按照数据规范化理论对数据库进行优化,控制数据冗余,避免异常操作,提高系统的稳定性、数据库的安全性,更好地确保数据库中数据的有效性和一致性。
(3)深入探究数据隐藏关联。目前系统风险预警模块尚且只能进行有毒成分的检测以及简单的知识图谱检索,未能深度分析有毒成分与中成药规格用量和不良反应之间的关系。后期将继续挖掘中成药相关数据,丰富优化风险预警知识图谱,不断提高中成药用药的安全性,促进中成药现代化、信息化发展。