patient <- data.frame(pid = 1:3)
admission <- data.frame(
pid = c(1, 1, 2, 2, 3),
vid = c(11, 12, 21, 22, 31),
admit_day = c(1, 5, 2, 8, 3)
)
diagnosis <- data.frame(
pid = c(1, 1, 2, 3),
vid = c(11, 12, 21, 31),
dx_day = c(1, 5, 2, 3),
icd = c("I10", "I11", "I10", "J18")
)
lab <- data.frame(
pid = c(1, 1, 2, 2, 3),
vid = c(11, 12, 21, 22, 31),
lab_day = c(1, 5, 2, 8, 3),
Hb = c(9.8, 11.3, 10.8, 9.2, 8.6)
)
# Scenario 1: any target diagnosis, keep all records of matched patients.
res_s1 <- screen_data_list(
data_list = list(patient = patient, admission = admission, diagnosis = diagnosis, lab = lab),
entry_expr = any(icd == "I10"),
entry_level = "patient_id",
patient_id_map = "pid",
output = "list"
)
# Scenario 2: any target diagnosis, keep diagnosis-index admission and after.
res_s2 <- screen_data_list(
data_list = list(patient = patient, admission = admission, diagnosis = diagnosis, lab = lab),
entry_expr = any(icd == "I10"),
entry_level = "patient_id",
anchor_expr = any(icd == "I10"),
anchor_level = "date",
anchor_window = "from_first_anchor",
patient_id_map = "pid",
visit_id_map = c(admission = "vid", diagnosis = "vid", lab = "vid"),
date_map = c(admission = "admit_day", diagnosis = "dx_day", lab = "lab_day"),
output = "list"
)
# Scenario 3: target diagnosis patients, then abnormal indicator visit and after.
res_s3 <- screen_data_list(
data_list = list(patient = patient, admission = admission, diagnosis = diagnosis, lab = lab),
entry_expr = any(icd == "I10"),
entry_level = "patient_id",
anchor_expr = any(Hb > 10),
anchor_level = "date",
anchor_window = "from_first_anchor",
patient_id_map = "pid",
visit_id_map = c(admission = "vid", diagnosis = "vid", lab = "vid"),
date_map = c(admission = "admit_day", diagnosis = "dx_day", lab = "lab_day"),
output = "list"
)
Run the code above in your browser using DataLab