◆车林彬 林冬梅 李风舟
基于口腔药物临床数据安全应用平台设计的探讨
◆车林彬 林冬梅 李风舟通讯作者
(南方医科大学深圳口腔医院(坪山) 广东 518118)
随着计算机的发展和存储技术的改善,可产生和存储的个人信息的数量级也呈指数上升,这为大数据产业带来了便利,也为医疗领域数据分析提供了大量可使用的数据。大数据与计算机技术已经开始在口腔药物临床中得到应用,本文论述的口腔药物临床数据安全应用平台设计的探讨主要是以电子病历为核心的医疗信息系统产生的业务数据为基础,针对口腔药物临床数据应用的安全方面进行设计,支持以病人为中心的全过程医疗服务和各医疗服务环节质量优化和效率的提高,充分体现现代口腔医学管理思想与计算机信息技术的完美结合,故此本课题基于口腔药物临床数据安全应用平台设计,实现了不同角色访问不同安全性数据功能,从而实现口腔药物临床数据应用的安全性。
口腔药物临床;数据安全;应用平台;设计
口腔药物临床数据是计算机科学、信息技术与现代口腔医学相结合的产物。口腔药物临床数据即在口腔医学临床、教学、科研及管理领域中应用计算机科学、信息科学的理论和技术,同时运用认知科学、决策科学、逻辑学和统计学等使其相互整合、相互渗透和相互促进。口腔药物临床数据的范畴非常广泛,它包括口腔医学领域内各种数据、信息及知识的获取、表达、处理、储存、检索、传播、管理及其应用等各个方面。所以本次设计的口腔药物临床数据安全应用平台,在数据持有阶段,首先删除数据的明确事例,再对剩余数据使用k-anonymity,l-diversity,t-closeness三种方法分别对数据进行不同程度的脱敏;在数据使用阶段,对不同用户进行身份验证和访问控制实现不同等级用户访问到相对应等级数据使用,从而达到数据应用所需的安全需求。
2.1.1系统需求分析
口腔药物临床数据安全应用平台使用过程中通过构建数据周期。并在数据发布阶段会面临数据隐私泄露的风险,设计中可以使用匿名算法对数据进行数据脱敏处理;在数据存储阶段,如果存储在不可信数据库中则会遭到第三方的窥探和篡改,因此我们要对数据进行加密保护;数据分析挖掘过程中,通过关联、聚类等方法仍可以分析出隐私数据,这时我们需要通过数据变化等方式进行处理;在数据使用阶段,如果不可信用户可以对数据进行越权访问,这时我们要使用访问控制给用户加以权限。同时由于不同匿名算法处理后,数据的细粒度和安全性不同,因此匿名化数据越接近原始数据,信息损失就越少,可用性会显著增高。所以,在数据使用阶段,设计了角色访问控制,可以使等级高的用户访问精确度更高的数据,而等级低的用户只能访问精确度低的数据。
2.1.2系统功能逻辑设计
口腔药物临床数据安全应用平台总体设计分为管理员系统和用户系统两个部分。首先在数据库中注册默认管理员,管理员登录医疗数据安全处理系统,管理员登录后首先进入数据录入界面,通过页面导航栏进行不同页面的切换。而用户通过医疗数据处理系统的注册页进行注册,用户点击登录,首先进入数据下载页,并通过页面导航栏进行不同页面切换。如果管理员没有上传数据,则用户下载页为空,如果管理员重新上传新数据,则用户下载页内容更新。
2.1.3系统管理员功能设计
口腔药物临床数据安全应用平台在管理员界面,需要通过上方导航栏,切换“数据上传”、“匿名处理”、“用户权限管理”三个功能界面。在数据上传界面,管理员在输入框中填写用户姓名,年龄,邮编以及所患病名称,然后再上传该患者对应的基于测序文件。点击提交后,管理员可以再次上传其他用户信息。在匿名处理界面,管理员可以分别选择k-匿名,l-多样性,t-接近三种方法对已上传患者信息做匿名处理操作,处理后数据存入数据库。在用户权限管理界面,对用户进行提权操作时候,前端展示用户ID,姓名以及对应的等级值,管理员可以通过修改等级值,达到不同等级用户访问不同精度信息的效果。
2.1.4用户功能设计
口腔药物临床数据安全应用平台在用户使用界面,通过页面导航栏分别可以切换到“数据下载页”、“数据分析页”和“历史记录页”。在数据下载页,用户可以下载该用户等级可以下载的医疗数据信息,数据以zip形式下载,用户可以自行使用这些数据。在数据分析页,用户可以选择某个用户的信息进行上传,通过pyclone处理,可知道患者的口腔临床治疗情况。
2.1.5技术模型设计
口腔药物临床数据安全应用平台采用flask(Python web框架)进行后端开发,利用mysql存储医疗数据,前端使用Bootstrap作为开发框架。该系统利用docker进行数据库部署,同时利用conda环境实现pyclone算法环境配置,使用3306端口实现后端与数据库连接,用jinja2实现前后端联通。
口腔药物临床数据安全应用平台采用关系数据库,并将mysql作为主要数据库,存储的数据主要有注册时用户信息、角色访问控制信息、管理员上传患者信息、患者信息匿名处理后结果,以及pyclone处理中用户上传信息以及使用状态信息。本数据库设计了以下几部分,它们分别为:user_profile用户信息表、level_operate等级-权限表、medical_info医疗数据表、result_info匿名处理表,history_status历史记录状态表。
3.1.1子函数设计与实现
子函数设计与实现中首先在names元组中定义属性名称,并在categorical集合里定义非数值型属性,方便后续泛化时处理。同时,用read_csv函数读取文件信息并存在df参数中,并在get_spans的函数中传入df(存表数据的结构)和partition(属性列),以此计算出每个属性的值域,此过程中如果时数值类型就用max-min,如果是非数值类型用unique()函数统计,并返回在split()函数中,将传入的df均分为ldf,rdf两部分,如果要分割的属性是数值型则利用median()统计均值,如果属性值是非数值类型,则用len=unique()统计不同的个数,然后将前len/2和后len/2分别分为两组。此外在子函数设计与实现中,也需要使用is_k_anonymous()函数,在函数中传入分组和k值,判断此分组内数据个数是否小于k,如果小于k返回Flase,否则返回True。
3.1.2主函数设计与实现
主函数设计与实现中,需要在partition_dateset中使用之前定义的函数,实现对数据分割。此阶段要定义准标识属性值(feature_colums)和敏感属性值(sensitive_colum)。首先令函数partition=partitions.pop(0)弹出第一组数据。利用sorted(spans.items(),key=lambda x:-x[1])对属性值域从大到小排序。按值域大的属性先将数据分为左右两个部分,并判断他们是否属于k-匿名算法标准,如果不属于则重新统计属性值域,按值域大的属性再进行分割,直到每个分组满足k匿名的判断条件,并存入finished_partition中在l-diversty,t-closet匿名算法中。所以基于k-匿名算法模型的基础上,需要在分割的判断条件中增加对敏感属性的个数判断和频率判断。
3.1.3泛化处理设计与实现
泛化处理设计与实现过程中选在build_anonymized_dataset中对上面产生的分组进行泛化处理,对于准标识属性,利用agg()进行聚合,数值类属性同一等价类中的值进行均值处理,非数值类属性进行合并。然后对等级类中元组按敏感属性值进行个数统计。最后输出泛化数据。
3.2.1注册事件
当用户主动进入注册界面或者未登录状态访问需登录的界面被__repr__回调函数弹回注册界面。由于用户口令认证方式是身份管理识别系统中最常用的身份识别方式,需要采用用户名和密码的方式进行登录验证,所以在注册事件中,需要采用用户名配合密码的注册验证的方式。当进入注册界面后,会出现两个输入框,让用户输入想要注册的用户名与密码,当用户点击注册时,所填写信息将会以POST的方式传输至后台模块。此外,在判断request模块在后台与mysql交互部分调用select函数语句进行检测是否有重名用户,若没有重名用户则为可注册状态,利用register_add_user方法,系统会在数据库中以普通用户权限添加用户的用户名与密码信息,以此完成一次完整的注册事件。
3.2.2登录事件
当用户已经拥有此系统的用户名密码后,系统将会采用用户账户身份认证系统中最常用的身份认证鉴别方式的用户口令检测方法进行用户状态登录。在弹出用户登录界面后,可以看到两个输入框,其中有提示可以依次输入用户注册的用户名和密码。在正确输入用户名与密码,点击登录按钮后,前端界面将会以POST方式将用户输入的数据传输至后台。同时后台会利用request.method接收到POST数据后,第一时间调用login函数进行用户登录的判定,其中login_info首先会进入数据库中查询是否有此用户名的数据,若存在此用户,会进行二次的密码比对。若此用户名的信息在数据库中存在,且数据库中存储密码和前端POST提交密码相同,则可以登录。如果login函数检测失败则会后台内部告警abort,并返回登录失败401的对应界面,提示用户登录失败。
3.3.1管理员提交数据事件
当用户处于登录状态时,可以点击提交数据进入数据提交界面,在提交界面可以填写自己的相关信息,并上传自己基因的CSV后缀文件至系统进行匿名处理相关数据分析。在提交页面点击提交后,所填写数据与文件将会以POST方式提交至后台upload函数进行进一步分析处理。此过程中需要使在upload函数,首先将提交csv文件存储至服务器中对应用户的目录中,以备进一步使用。在文件成功存储至服务器当中后,upload函数将获取全部POST提交的数据,调用uploadfile函数将用户填写信息打包提交至mysql数据库当中。在此之后,会将uploadfile新增到mysql数据库中的信息,置为等待中的状态,并将此条信息的id送入threading多线程队列中,等待处理函数operate_task每间隔时间的统一处理。当以上流程全部没有报错的执行成功后,前端会弹窗提示信息提交成功,即可完成一次数据提交流程。
3.3.2匿名算法选择页面
在匿名算法选择界面用户可以主动点击button下的a标签下拉选择想要使用的匿名处理算法,后台在接收到对应选择后,会有选择性地调用k匿名算法,通过l-diversty算法或者t-closeness算法进行用户对应算法的调用,在处理数据完成后,select_k函数将全部已处理完成的数据调用flask_sqlalchemy存储至mysql数据库当中。同时将数据压缩为zip格式存储至服务器当中,提供给后续下载步骤使用,在完成后前端页面会展示已处理完成的匿名化脱敏数据集。
3.3.3修改权限
当用户想要变更账号权限时,可以向管理员进行申请。管理员使用自己的账户登录到管理员专属账户中,可以在管理员全体用户管理界面看到全部用户的用户名,密码与对应账号的权限等级。管理员可以选择一个用户进行用户权限等级的修改,在对应用户的旁边点击修改按钮,这条指令将会以POST格式提交到后台,首先调用select查询到对应用户信息,接下来使用update方法对该用户信息进行变更,用户的权限等级即可发生改变。
3.4.1用户下载数据
当用户进入数据下载界面时,后台会根据当前登录用户id到后台mysql数据库中进行select函数的调用,并查询到当前登录用户id的权限等级,使用download函数可以让用户等级在数据库中进行二次查询,获取当前用户等级,并下载数据,并将数据集的数据名与对应连接传输至前端。此过程中前端在后端完成处理,并返回数据后展示全部当前用户可下载数据,同时用户可以点击对应数据的下载进行数据集的下载,此时浏览器会自动开启下载任务,下载完成后,前端界面会弹窗提示数据下载成功,完成一次用户下载数据操作。
3.4.2用户上传数据
当用户处于登录状态时,可以点击提交数据进入数据提交界面,在提交界面可以填写自己的相关信息,并上传CSV后缀文件至系统进行pyclone处理相关数据分析。在提交页面点击提交后,所填写数据与文件将会以POST方式提交至后台upload函数进行进一步分析处理。在upload函数中,首先将提交csv文件存储至服务器中对应用户的目录中,以备进一步使用。在此之后,会将uploadfile新增到mysql数据库中的信息,置为等待中的状态,并将此条信息的id送入threading多线程队列中,等待处理函数operate_task每间隔时间的统一处理。当operate_task函数发现有等待中数据时,会从等待队列中leftpop取出数据集,调用Pyclone处理函数,其间pyclone处理的中间过程日志将会保存到服务器的log文件中可以便于意外情况的排查。当以上流程全部没有报错的执行成功后,服务器会调用pdf2png函数将pyclone的生成结果从pdf格式转变成png格式。完成处理后,前端会转跳到历史记录页面,完成一次pyclone调用流程。
3.4.3历史记录页
在用户进入历史记录页面后,服务器首先根据当前登录用户id到后台mysql数据库中进行select查询获取当前用户全部的历史提交记录,其中分为等待中,处理中,已完成三种已提交数据状态,之后将查询到的数据信息传递给前端,当前端接收到数据库后会使用jinja2语句进行for循环将全部用户历史记录展示给用户,用户可以选择已完成的数据进行点击,前端将会转跳到对应的详细数据处理后的结果界面进行前端展示。
3.4.4处理结果页
当用户在历史提交记录界面点击一个已完成的数据后,前端会转跳到处理结果的对应详情页,后台会进入mysql数据库进行select数据查询,获取此用户对应的提交结果的详情页面,并获取之pdf2png函数处理的png图片,与其他用户提交时候填写信息的匿名化处理结果一起传输至前端进行结果展示,
社会进入信息时代,同时计算机普及和存储技术得到了改善,存储设备变得廉价。在网络中产生大量个人信息,同样随着信息联网化,医疗等领域大放光彩。为了建立口腔药物临床数据安全应用平台,实现在数据发布时数据的脱敏处理以及医疗数据的安全使用。经过测试,口腔药物临床数据安全应用平台已经达到了最初的设计要求,除此之外口腔药物临床数据安全应用平台采用多维k-匿名处理方式,减少了在一维k-匿名中面临的复杂步骤,以及在数据的分割时,结果具有更高的灵活程度。
[1]张明武,黄嘉骏,韩亮.医疗大数据隐私保护多关键词范围搜索方案[J].软件学报,2021,32(10):3266-3282.
[2]康海燕,邓婕.面向医疗数据安全存储的增强混合加密方法[J].北京理工大学学报,2021,41(10):1058-1068.
[3]辛蔚妮,李烁思,郑妍珣.口腔专科医疗机构信息平台一体化的建设及实践应用[J].中国卫生事业管理,2020,37(12):896-899.
[4]于里.口腔病例管理与辅助诊疗系统[D].吉林大学,2020.