病案随机抽样的SAS实现

2021-10-13 00:52谷玉婷彭志刚
中国医院统计 2021年4期
关键词:病案出院分层

谷玉婷 翁 俊 彭志刚

中山大学附属第一医院,510080 广东 广州

病案资料记录患者全部诊疗过程,内含客观且丰富的信息,在医疗、教学、科研、法律、社会保险等方面都有着重要的作用[1]。随着医疗改革的推进,公立医院绩效考核的开展,诊断相关分组(diagnosis related groups,DRGs)付费、按病种分值付费等政策的实施,病案在临床科研、医院管理以及医疗保险赔付等方面的利用率逐年增加[2],这对病案的质量与应用都提出了更高的要求。然而病案管理科以及医院其他科室,囿于有限的人力物力,无法实现全部病案的质检或调查,所以通常首选随机抽查部分病案,以期能反映整体情况。在实际工作中,由于相关工作人员忽视随机抽样的实践价值或缺乏统计软件应用技能的训练,未能做到有效的随机抽样,从而使病案管理或随机调查的工作效果大打折扣。随机抽样,是指按照随机原则从总体中抽取一定数目的单位作为样本进行观察。随机抽样使总体中每个单位都有一定的概率被选入样本,通过调查样本情况有效推断总体情况。根据调查对象的性质和研究目的的不同, 随机抽样又分为简单随机抽样、系统抽样(等距抽样)、分层抽样、整群抽样、多阶段抽样等[3]。在病案管理中,常用的随机抽样方法为简单随机抽样和分层随机抽样。简单随机抽样使每个样本有相同的概率被抽中,常用于编码正确率的抽样检查、病案整理工作的质量检查等;若数据中存在对调查结果影响较大的因素,则建议按照该因素进行分层随机抽样,使各层级、各类型的病案均能按照工作的要求出现在抽样获得的样本中,常用于四级病案质量检查、医保抽样检查等。数据分析软件SAS(statistical analysis system,SAS)是数据统计分析的标准软件,是国际上多数临床研究学术期刊对涉及随机抽样问题时默认的最权威统计软件。本文主要介绍运用SAS中的surveyselect过程实现这2种随机抽样的方法,基于工作的要求设置为数不多的几个参数,可在日常病案管理中方便应用,从而提升病案管理的规范性和科学性。

1 SAS中的surveyselect过程介绍

SAS中的surveyselect过程可以实现常用的各种抽样,包括:单纯随机抽样、系统随机抽样、分层抽样、无限随机抽样 (有替换) 、序贯随机抽样, 以及按规模大小成比例概率抽样等[4]。编程时用method来指定抽样模式,包括不放回简单随机抽样(simple random samping,SRS)、放回简单随机抽样(unrestricted random sampling,URS)和系统抽样(systematic sampling,SYS);用seed来设定随机数种子,若省略则系统默认抓取计算机时钟的当时时间,转换为SAS系统定义的SAS时间作为随机数发生器的种子,在实践中为了保证随机抽样结果的可重现性,可为随机数的发生设定一个种子;通过n设定随机样本的数量,或者samprate设定抽样比例;out设定抽取样本存放的数据集;strata指定分层因素。本文使用的版本为SAS 9.3。

2 实施随机抽样的病案数据实例概况

本文以某医院病案系统导出“2019年4月”数据为例来说明SAS的实现过程。该数据类型为Excel,有2 183条记录,8个变量,包括病案号、天数、出院科别、出院日期、是否手术、是否抢救病人、是否死亡、病例分型。见表1 。

表1 某院2019年4月出院患者

3 病案数据集导入SAS数据集的过程和实现

成功导入外部数据是SAS数据分析成功运行的第一步。在病案管理系统中导出的数据格式通常为Excel,运用proc import语句从外部数据源读取Excel数据并将其写入SAS数据集的程序如下:

proc import out=a

datafile= "D:举例2019年4月.xlsx"

dbms=xlsx replace; /*向SAS系统说明拟导入数据的位置、文件类型和存储方式*/

getnames=yes; /*将原文档中的变量名复制进SAS数据集*/

options validvarname=any; /*允许沿用原文档中不符合SAS变量名命名要求的非法字符*/

run;

上述程序中,datafile后面引号内为指定输入文件“2019年4月”的完整路径,将上述指定文件转换为SAS格式并输出到SAS数据集a,dbms用来指定导入文件的类型,该类型需要与文件后缀名保持一致,通常是xlsx、xls、csv等格式的文件,replace表示覆盖现有的数据集。getnames=yes表示以导入数据的第一行作为变量名称。默认的SAS命名规则无法使用中文等特殊字符作为SAS变量名,可通过validvarname=any突破此限制。通过运行“run” ,便可将指定输入文件转换为SAS数据。

4 随机抽样过程及SAS实现

4.1 简单随机抽样

依据医院上级部门要求,从2019年4月随机抽取100份病案进行患者满意度调研,程序如下:

data b;

set a;

proc surveyselect data =a method=srs n=100

out=samplesrs;

run; /*采用简单随机方法随机抽取100份病案*/

proc sort data=samplesrs out=samplesrs1;

by 病案号;

run; /*将随机抽样结果按照病案号进行排序*/

proc print data=samplesrs1(obs=5);

var 病案号 出院科别 出院日期;

run; /*打印出所获得病案的所需信息*/

上述程序运用proc surveyselect对数据进行随机抽样,用method来限定抽样方法为简单随机(SRS);用seed来设定随机数种子,此处省略意味着使用计算机时钟对应的时间;抽样的样本量n设定为100。随机抽样完成后,将数据导出到samplesrs数据集。见表2。

表2 对数据集a进行简单随机抽样的有关设置

为方便查看,将随机结果按病案号升序排序后打印随机抽样结果,限于篇幅,仅以前5例作为示例,包含变量为病案号、出院科别和出院日期。见表3。

表3 对数据集a进行简单随机抽样的结果(前5例)

4.2 分层随机抽样

分层随机抽样是将样本总体按照某些重要类别因素(例如病例分型、是否接受手术等)进行分层,然后在各层中运用简单抽样或者系统抽样进行样本抽取。surveyselect过程通过在层内选择独立样本来进行分层抽样,层内个体不重叠出现在调查总体的亚组中。分层可控制各层样本大小,广泛应用于调查个体多样的实践中[5]。病案来自不同科室、是否死亡、是否抢救、是否手术、长期住院等因素,导致各个病案之间差异性比较大,采用简单随机抽样无法保证以上各层级、各类型的病案均能按照工作的要求出现在抽样获得的样本中,这时可以通过分层随机抽样抽取更具有代表性的资料,提高总体估计的合理性。

4.2.1 单个分层因素

当顾及1个对调查结果有影响的因素时可采用单个因素分层。各层内抽取的个体有时需与总体中层内个体的占比一致,有时数目固定,此处选择各层样本量为固定值。

依据上级部门要求,专项抽查疑难危重病例诊治情况,需各科随机抽查3份疑难危重病案,程序如下:

data b;

set a;

If 病例分型=‘C’ or 病例分型= ‘D’;

run; /*选择病例分型符合要求的患者*/

proc tabulate data=b;

class 出院科别;

table 出院科别;

run; /*定义拟选病案的分层依据是“出院科别”,并简略进行汇总*/

proc sort data=b;

by 出院科别;

run;

proc surveyselect data=b method=srs n=3 out=samplesrs;

strata 出院科别;

run; /*各科内部随机选择3份病案*/

proc print data=samplesrs(obs=10);

var 病案号 出院科别 出院日期 ;

run; /*打印出所获得病案的所需信息*/

因上级部门专项抽查疑难危重病例,所以我们需在疑难危重病例中随机抽样,可通过if条件语句,选择病例分型符合要求的患者。因各个科室疑难危重病例诊治情况以及比例不同,采用简单随机可能使个别收治比例较低科室随机抽样的样本数过少甚至没有随机抽样到,为保证上级部门对各科的疑难危重诊治情况皆有所掌握,所以拟选病案的分层依据是“出院科别”,并简略进行汇总。见表4。

表4 数据集a各科室疑难危重病案频数分布情况

因proc surveyselect要求输入数据集为按分层变量排序后的数据集,所以先用proc sort将数据按照“出院科别”进行排序,默认为升序。然后在每个层“出院科别”里,采用简单随机在每个科室随机抽取3人。见表5。

表5 对数据集a按出院科别分层随机抽样的有关设置

随后运用proc print 过程查看前10位结果。见表6。

表6 对数据集a按出院科别分层随机抽样的结果(前10例)

4.2.2 多个分层因素

当需要顾及多个对调查结果有影响的因素时可采用多个因素分层,但不建议层数太多,造成个别层内病例数太少。个体基于这些因素将被组合出若干类型,各类型内抽取的个体数目要求同4.2.1,此处选择样本内各类型占比与总体中一致。

拟进行2019年4月终末质控,为如实反映病案的质量问题,需要按照是否死亡、是否抢救病人、是否手术来进行分层抽样,各种类型均抽取10%的病案,程序如下:

data b;

set a;

proc sort data=b;

by 是否手术 是否抢救病人 是否死亡;

run; /*指明需要顾及的分层因素并进行排序*/

proc tabulate data=b;

class 是否手术 是否抢救病人 是否死亡;

tables 是否手术*是否抢救病人*是否死亡;

run; /*各层患者的汇总列表*/

proc surveyselect data =b method = srs samprate=0.1 out = samplesrs;

strata 是否手术 是否抢救病人 是否死亡;

run; /*各类型患者内均随机抽取10%的比例*/

proc tabulate data=samplesrs;

class 是否手术 是否抢救病人 是否死亡;

tables 是否手术*是否抢救病人*是否死亡;

run; / *对抽样获得病例的列表形式*/

proc print data=samplesrs(obs=10);

var 病案号 出院科别 出院日期 ;

run; /*打印出所获得病案的所需信息*/

在进行病案的质量检查工作中,患者是否手术、是否经过抢救、结局是否死亡等不同情况的病案,其书写的难易程度以及书写的内容均有所不同,若采用简单随机,可导致一些占比较低却非常重要的病案如“死亡病案”随机抽样得到的例数过低。为保证各种情况的病案均有一定的比例被抽取到,检查的结果更具有代表性,将数据按照 “是否手术”“是否抢救病人”“是否死亡”进行分层,每一层的抽样比例相等,均为10%。见表7。

表7 对数据集a兼顾3因素实施分层随机抽样的有关设置

通过proc tabulate列表查看各层的抽样情况,通过proc print显示前10位的抽样结果。见表8。

表8 对数据集a兼顾3因素实施分层随机抽样的结果(前10例)

5 推广应用中需注意的问题

在病案的日常管理中,不少所谓的随机抽查实际上是主观意志决定选择的样本,为了节省时间,抽查者倾向于选择内容简略或取阅方便的病案,这样抽取的数据对总体不具有代表性,调查或者质检的结果难以

如实反映整体的情况。当涉及质控评分或者奖罚问题时,这种主观意志决定的随意抽查往往造成选择性偏倚,会导致一些医生经常被抽到而另一些极少被抽到,抽查的随机性和公平性会受到质疑。也有运用随机数字表进行随机抽样,但只适合少量的样本,在面对大量的病案随机抽样时,效率非常低下。通常为保证所抽查到的病案包含一定比例的死亡、抢救等信息,往往需要将数据单独导出,反复权衡,兼顾数量和公平性等,导致病案抽取的进度缓慢,效率低下。

Excel亦可实现病案的随机抽样,利用函数rand()、randbetween()结合其他函数index()、if()、large()、small()等实现简单随机或系统随机,分层随机需结合高级筛选功能[6],或结合Excel VBA编程完成[7]。也可通过加载“分析工具库”,在“数据分析”中的“分析工具”选择抽样,由于内置的抽样功能只能实现间隔和随机2种抽样方法,且在随机抽样中仅能实现有放回抽样,因此使用起来不够灵活[6]。综上所述,虽然Excel相对其他软件更容易获得,适合不熟悉SAS软件人员使用,但远远不如统计分析软件SAS高效快捷。SAS中的surveyselect过程可以实现多种抽样,足以满足病案随机抽样的要求。在病案的日常应用中,只需更改所需的参数,即可满足多种抽样要求,能快速获得准确反应整体情况的病案样本,简化病案抽查过程,提高病案质控和管理的效率和质量。

新的信息环境对病案管理提出了新的要求,如何将现代化技术与病案信息相结合,同时确保病案信息的完整与安全,更好地提炼加工病案的医疗信息,进行质量控制以及反馈指导临床工作是当今病案管理工作的要点[8]。以数据为导向进行管理将更加科学和精准,将合理采集与预处理资料的思路、方法以及软件纳入到病案管理中,可进一步提高病案管理的工作水平。

猜你喜欢
病案出院分层
基于二维码的病案示踪系统开发与应用
54例COVID-19患者出院1个月后复诊结果分析
试析病案管理中预防病案错位发生的方法
中西医结合治疗一例新型冠状病毒肺炎出院患者的疗效观察
一种沉降环可准确就位的分层沉降仪
雨林的分层
有趣的分层
试论病案管理在防范医疗纠纷中的作用
PDCA循环改进对病案首页中主要诊断正确选择的影响分析
第五回 痊愈出院