2016-06-30 11 views
1

Es ist schwierig, eine angemessene Methode zur Berechnung der Einhaltung der Medikation zu finden. Da ich weiß, dass keine perfekte Lösung existiert, möchte ich die Anzahl der Tage berechnen, an denen ein Patient seine Medikamente definitiv nicht hätte einnehmen können, weil er keine hatte. Ich möchte dies für jedes Mal tun, wenn Medikamente ausgegeben werden.Berechnen Sie die Einhaltung der Medikation: kumulative Pille Knappheit

Ich habe Apotheke Daten, die wie folgt aussehen:

x <- data.frame(
    patient_id = 1, 
    issue_date = as.Date("1990-01-01") + cumsum(c(0, 35, 30, 25, 30)), 
    no_tablets = 60 
) 

    patient_id issue_date no_tablets 
1   1 1990-01-01   60 
2   1 1990-02-05   60 
3   1 1990-03-07   60 
4   1 1990-04-01   60 
5   1 1990-05-01   60 

Ich kann vom Kurs abgekommen, den Unterschied in issue_date s berechnen und sehen, ob es zu no_tablets/2 (bidaily Dosis) gleich ein Patient nehmen mußte. Aber wenn ein Patient seine Drogen früher sammelt, kann er dann länger auf das nächste Mal als diese Zeit warten, weil er einen Vorrat an Medikamenten hat.

Ich habe versucht, die Berechnungen an einer kumulativen Anzahl von Tagen und einer kumulativen Anzahl von Dosen zu tun, und dann summieren Sie alle nicht negativen kumulativen Pille Mangel. Wenn jedoch ein Patient einmal zu spät kommt und dann das Medikament genau rechtzeitig abholt, steht diese Zahl noch und wird dann mehrfach gezählt.

Haben Sie noch andere Ideen, wie ich das machen kann? Vielen Dank im Voraus!

Antwort

0

In Ihrem Beispiel sieht es so aus, als ob die Pillenversorgung dieses Patienten die Anzahl der Tage zwischen den Nachfüllungen überschreitet. Ohne ein Beispiel von dem, was Sie wollen Ausgabe, ich denke, das Skript unten kann ausreichen:

x <- data.frame(
    patient_id = c(rep(1, 5), rep(2, 5)), 
    issue_date = c(rep(as.Date("1990-01-01") + cumsum(c(0, 35, 30, 25, 30)), 2)), 
    no_tablets = c(rep(60, 5), rep(31, 5)) 
) 

y <- data.frame(
    patient_id = c(1, 2), 
    pills_per_day = c(2, 1) 
) 

z <- merge(x, y, by = "patient_id") 

library(data.table) 
z <- data.table(z) 
z[, days_excess := (no_tablets/pills_per_day) - ifelse(patient_id == shift(patient_id, 1, type = "lead"), 
                -as.integer(issue_date - shift(issue_date, 1, type="lead")), 
                NA)] 

print(z) 
    patient_id issue_date no_tablets pills_per_day days_excess 
1:   1 1990-01-01   60    2   -5 
2:   1 1990-02-05   60    2   0 
3:   1 1990-03-07   60    2   5 
4:   1 1990-04-01   60    2   0 
5:   1 1990-05-01   60    2   NA 
6:   2 1990-01-01   31    1   -4 
7:   2 1990-02-05   31    1   1 
8:   2 1990-03-07   31    1   6 
9:   2 1990-04-01   31    1   1 
10:   2 1990-05-01   31    1   NA 
+0

Vielen Dank für Ihre Antwort. In meinem Beispiel muss der Patient 2 Tabletten pro Tag einnehmen, daher übersteigt manchmal die Anzahl der Tage die Anzahl der Tabletten des Tages. – Jasper

+0

@Jasper Ich habe meine Antwort bearbeitet, um einen weiteren Patienten hinzuzufügen, und für die beiden Patienten unterschiedliche Pillmengen pro Tag hinzugefügt. Wenn ich es noch einmal ansehe, habe ich auch die Cumsum-Funktion entfernt und nur die monatlichen Überschüsse für jede Nachfüllung betrachtet. – bshelt141

+0

Danke nochmal Brandon. Das Problem ist, dass ein Patient ein Pille-Defizit haben darf, wenn er einen "Vorrat" von einem vorherigen Überschuss hat. Ich denke, ich muss etwas kumulativ machen. – Jasper