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

如何按日期间隔规则累加患者抗菌药用药时长 遇超间隔终止循环

患者抗菌药物累计用药时长计算逻辑与代码修复

核心计算规则

首先明确间隔定义:当前新区间的开始日期 - 上一合并后区间的结束日期,每位患者最多支持20段用药区间计算,规则如下:

  • 间隔<0时(区间重叠):
    • 若当前区间结束日期 ≤ 上一合并区间结束日期,总用药时长保持不变
    • 若当前区间结束日期 > 上一合并区间结束日期,将两个结束日期的差值累加至总时长
  • 间隔为0或1天时:合并两个区间,累计时长更新为 当前区间结束日期 - 原合并区间开始日期 + 1
  • 间隔为2天时:合并两个区间,累计时长更新为 当前区间结束日期 - 原合并区间开始日期
  • 间隔≥3天时:完全终止时长累加逻辑,不再计算后续所有区间的时长

规则示例:

  1. 用药区间为第1-4天、第6-9天(间隔1天),忽略间隔日总时长为8天
  2. 用药区间为第1-3天、第8-12天(间隔5天≥3天),总时长仅计算前一段的3天

常见bug修复方案

使用数组+do循环实现时的典型错误:首次触发间隔≥3天的终止条件后,循环未真正退出,后续符合间隔要求的区间仍会被错误纳入时长累加。
修复核心逻辑:

  1. 初始化阶段额外定义终止标记位,比如stop_flag = 0,初始值为0代表未触发终止
  2. 每次循环启动首先判断stop_flag值,若为1直接退出整个循环,不执行任何后续计算
  3. 当计算到某段区间与上一合并区间的间隔≥3天时,立刻将stop_flag置为1,不执行当前区间的时长计算、区间合并操作

参考实现代码(适配数组+do循环的常用统计场景写法)

data calc_abx_duration;
    set patient_med_source;
    /* 假设源表存储20段用药区间,字段命名为start1-start20、end1-end20 */
    array st[20] start1-start20;
    array en[20] end1-end20;

    total_dur = 0;
    stop_calc = 0;
    /* 取第一段有效用药初始化合并基准区间 */
    merge_st = st[1];
    merge_en = en[1];
    if not missing(merge_st) then total_dur = merge_en - merge_st + 1;

    do i = 2 to 20;
        if stop_calc = 1 then leave; /* 触发终止规则后直接退出循环 */
        if missing(st[i]) then continue; /* 跳过空的用药记录 */

        gap = st[i] - merge_en;
        if gap < 0 then do;
            if en[i] > merge_en then do;
                total_dur + (en[i] - merge_en);
                merge_en = en[i];
            end;
        end;
        else if gap in (0,1) then do;
            total_dur = en[i] - merge_st + 1;
            merge_en = en[i];
        end;
        else if gap = 2 then do;
            total_dur = en[i] - merge_st;
            merge_en = en[i];
        end;
        else if gap >=3 then do;
            stop_calc = 1; /* 标记终止,下一轮循环直接退出 */
        end;
    end;

    keep patient_id total_dur;
run;

结果校验要点

  • 必须覆盖「间隔≥3天后紧跟间隔0/1/2天区间」的测试样本,确认后续区间不会被计入时长
  • 重叠区间场景需要分别测试「当前区间完全被已有合并区间包含」「当前区间超出已有合并区间结束日期」两种情况
  • 空值用药记录需要做跳过处理,避免日期计算返回缺失值导致结果异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:03:04