【问题标题】:Tracking when a patient might not have medicine跟踪患者何时可能没有药物
【发布时间】:2021-05-18 01:05:35
【问题描述】:

我对此有点困惑,我可以利用社区的一些见解。假设由于不寻常的情况,患者不定期接受药物治疗:

Patient_Receiving_Schedule <- tibble(Medicine_Received = c(ymd("2019-01-01"), ymd("2019-01-20"), ymd("2019-02-01"), ymd("2019-06-01"), ymd("2019-06-15")),
                                        Days_of_Medicine_Received = c(30,30,30,30,30))

在某些情况下,患者手头上的药物可能是之前装运的多余药物,而在其他一些情况下,患者会因为两次装运时间过长而没有药物或过期。理想的输出是这样的:

Patient_Receiving_Schedule <- tibble(Medicine_Received = c(ymd("2019-01-01"), ymd("2019-01-20"), ymd("2019-02-01"), ymd("2019-06-01"), ymd("2019-05-15")),
                                        Days_of_Medicine_Received = c(30,30,30,30,30),
                                        Days_of_Medicine_Available = c(30,41,59,30,46),
                                        Notes = c("","","","Patient was 31 days overdue for medication",""))

Days_of_Medicine_Available 有点像 Medicine_Received 日期与 Days_of_Medicine_Received 之间的累积总和,但有规则,因为对 Days_of_Medicine_Available 的负值求和没有任何意义。

有没有办法通过调用 lag() 和一些围绕可用药物天数的累计值的逻辑来做到这一点?

非常感谢任何提示。

【问题讨论】:

    标签: r dplyr lubridate


    【解决方案1】:

    你能用一个逻辑,如果在上次发货后的 x 天数内没有收到药物,那么我们需要重置 Days_of_Medicine_Available 计算?

    如果是,那么您可以在此示例中将以下内容与 x = 30 一起使用,但您实际上可以将其设置为任何值。

    library(dplyr)
    
    Patient_Receiving_Schedule %>%
      group_by(grp = cumsum(Medicine_Received - lag(Medicine_Received, default = first(Medicine_Received)) > 30)) %>%
      mutate(Days_of_Medicine_Available = cumsum(Days_of_Medicine_Received) - as.integer(Medicine_Received - first(Medicine_Received))) %>%
      ungroup() %>%
      select(-grp)
    
    #  Medicine_Received Days_of_Medicine_Received Days_of_Medicine_Available
    #  <date>                                <dbl>                      <dbl>
    #1 2019-01-01                               30                         30
    #2 2019-01-20                               30                         41
    #3 2019-02-01                               30                         59
    #4 2019-06-01                               30                         30
    #5 2019-06-15                               30                         46
    

    【讨论】:

    • 这是一个非常好的想法,谢谢分享。但是,让我们假设答案是否定的——我们没有奢侈地宣布在 x 天后我们可以重置计算并且必须查看整个历史记录。有没有办法查看整个病史来判断患者是否在某些时候“过期”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2019-06-09
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多