You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SAS中基于医保理赔数据统计索引日后各月连续参保患者数

基于医保理赔数据统计索引日后1-12个月连续参保的独特患者数(SAS实现)

需求概述

使用SAS处理医保理赔数据,分别统计索引日期(indexdt)后第1个月、第2个月……直至第12个月内,具备连续参保状态的独特患者数量。

数据结构说明

  • startdt:医保参保起始日期
  • enddt:医保参保结束日期
  • continuous_enroll:连续参保标识规则:
    • 同ID的参保记录中,若当前记录的起始日期与上一条记录的结束日期无间隔(即startdt = lag(enddt) + 1),则标记为1
    • 存在间隔则标记为0
    • 每个ID的第一条参保记录该字段为缺失值

输入数据示例

data input;
  input ID $1. startdt:mmddyy10. enddt:mmddyy10. indexdt :mmddyy10. continuous_enroll;
  format startdt date9. enddt date9. indexdt date9. ;
  datalines;
1  1/1/2020 1/31/2020 3/12/2020 .
1  2/1/2020 2/28/2020 3/12/2020 1
1  3/1/2020 3/31/2020 3/12/2020 1
1  5/1/2020 5/31/2020 3/12/2020 0
2  8/1/2019 8/31/2019 3/16/2020 .
2  3/1/2020 3/31/2020 3/16/2020 0
3  4/1/2020 4/30/2020 4/13/2020 .
3  5/1/2020 5/31/2020 4/13/2020 1
3  8/1/2020 8/31/2020 4/13/2020 0
3  9/1/2020 9/30/2020 4/13/2020 1
;
run;

注:修正了原数据中9/31/2020的日期错误,改为9/30/2020

解决方案SAS代码

步骤1:生成索引日后1-12个月的月份区间表

创建包含每个月起始和结束日期的辅助表,用于后续匹配:

data months_after_index;
  set input;
  by ID;
  if first.ID then do;
    do month_num = 1 to 12;
      /* 计算索引日后第month_num个月的起始/结束日期(indexdt所在月为第0个月) */
      month_start = intnx('month', indexdt, month_num, 'b');
      month_end = intnx('month', indexdt, month_num, 'e');
      output;
    end;
  end;
  keep ID indexdt month_num month_start month_end;
  format month_start month_end date9.;
run;

步骤2:匹配参保记录与月份区间,判断连续参保状态

关联参保记录与月份区间,筛选覆盖目标月份的参保记录,并标记符合连续参保条件的记录:

data enroll_month_match;
  merge input(in=a) months_after_index(in=b);
  by ID;
  if a and b then do;
    /* 判断当前参保记录是否覆盖目标月份的任意日期 */
    if startdt <= month_end and enddt >= month_start then do;
      /* 连续参保判定:当前记录为连续参保,或为ID第一条记录且覆盖目标月份 */
      if continuous_enroll = 1 or continuous_enroll = . then do;
        eligible = 1;
        output;
      end;
    end;
  end;
  keep ID month_num eligible;
run;

步骤3:去重并统计每个月的独特患者数

对每个ID的每个月份去重,再统计各月的独特患者数量:

proc sort data=enroll_month_match nodupkey;
  by ID month_num;
run;

proc freq data=enroll_month_match;
  tables month_num / nocum nocol;
  weight eligible;
  title "索引日后1-12个月连续参保独特患者数统计";
run;

结果说明

以示例数据为例,核心统计结果如下:

  • 第1个月(2020年4月):1人(ID3,4月参保为第一条记录)
  • 第2个月(2020年5月):1人(ID3,5月参保为连续状态)
  • 后续月份的统计值可通过代码运行得到准确结果

内容的提问来源于stack exchange,提问作者user21583043

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:52:09