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

如何统计30天内患者的再入院次数?(多入院/出院日期场景)

统计30天内患者再入院次数的实现方案

核心逻辑说明

要统计30天内再入院,关键是将每位患者的入院记录按时间排序,对比当前入院日期与上一次出院日期的间隔,若间隔≤30天,则计为一次再入院。

示例数据对应预期结果

针对示例中的John Doe(PT Number 55):

  • 2023-01-31的入院距上一次出院(2023-01-12)间隔19天,属于30天内再入院
  • 2023-06-15的入院距上一次出院(2023-06-01)间隔14天,属于30天内再入院
  • 最终该患者的Readmissions字段值为2

存储过程内的具体实现步骤

假设患者住院记录表名为PatientAdmissions,字段对应:PtName, PTNumber, AdminDate, DischargeDate,提供两种实现方式:

方式1:窗口函数实现(推荐,性能更优)

利用LAG()窗口函数获取同一患者的上一次出院日期,计算间隔天数后统计符合条件的次数:

SELECT 
    PTNumber,
    PtName,
    COUNT(CASE 
        WHEN DATEDIFF(day, LAG(DischargeDate) OVER (PARTITION BY PTNumber ORDER BY AdminDate), AdminDate) <= 30 
        THEN 1 
        ELSE NULL 
    END) AS Readmissions
FROM PatientAdmissions
GROUP BY PTNumber, PtName;
  • PARTITION BY PTNumber:按患者编号分组,确保仅对比同一患者的记录
  • ORDER BY AdminDate:对同一患者的入院记录按时间排序,保证LAG()取到的是上一次出院日期
  • DATEDIFF(day, 上一次出院日期, 当前入院日期):计算日期间隔天数,判断是否≤30

方式2:自连接实现(兼容不支持窗口函数的数据库)

通过自连接关联同一患者的前后入院记录,筛选符合时间间隔条件的记录:

SELECT 
    a.PTNumber,
    a.PtName,
    COUNT(b.AdminDate) AS Readmissions
FROM PatientAdmissions a
LEFT JOIN PatientAdmissions b 
    ON a.PTNumber = b.PTNumber
    AND b.AdminDate > a.DischargeDate
    AND DATEDIFF(day, a.DischargeDate, b.AdminDate) <= 30
    AND b.AdminDate = (
        SELECT MIN(AdminDate) 
        FROM PatientAdmissions 
        WHERE PTNumber = a.PTNumber AND AdminDate > a.DischargeDate
    )
GROUP BY a.PTNumber, a.PtName;
  • 自连接关联同一患者,且下一次入院日期在上次出院日期之后、间隔≤30天
  • 子查询确保只取每一次出院后的第一次入院记录,避免重复统计

存储过程整合示例

将上述逻辑整合到存储过程中:

CREATE PROCEDURE Calculate30DayReadmissions
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        PTNumber,
        PtName,
        COUNT(CASE 
            WHEN DATEDIFF(day, LAG(DischargeDate) OVER (PARTITION BY PTNumber ORDER BY AdminDate), AdminDate) <= 30 
            THEN 1 
            ELSE NULL 
        END) AS Readmissions
    FROM PatientAdmissions
    GROUP BY PTNumber, PtName;
END;

调用存储过程即可获取结果:

EXEC Calculate30DayReadmissions;

注意事项

  • 确保日期字段为日期类型,若为字符串需先转换:CONVERT(date, AdminDate, 101)(101对应MM/DD/YYYY格式)
  • 若存在同一患者同一天多次入院的情况,需根据业务规则调整排序或去重逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:01:19