# build the long rule in multiple short source lines to avoid >100 char Rd lines
rule_bp <- paste0(
"(ifelse(is.na(val) | is.na(Systolic_BP2), NA, ",
"(abs(val - Systolic_BP2) >= 15) & (val > 15 & Prescription_drug == '')))"
)
# Source data
S_data <- data.frame(
National_code = c("123", "1456", "789","545","4454","554"),
LastName = c("Aliyar","Johnson","Williams","Brown","Jones","Garcia"),
VisitDate = c("2025-09-23", "2021-01-10", "2021-01-03","1404-06-28","1404-07-28",NA),
Test_date = c("1404-07-01", "2021-01-09", "2021-01-14","1404-06-29","2025-09-19",NA),
Certificate_validity = c("2025-09-21", "2025-01-12", "2025-02-11","1403-06-28","2025-09-19",NA),
Systolic_BP1 = c(110, NA, 145, 125,114,NA),
Systolic_BP2 = c(125, 150, NA, 110,100,NA),
Prescription_drug= c("Atorvastatin", "Metformin", "Amlodipine",
"Omeprazole", "Aspirin","Metoprolol"),
Blood_type = c("A-","B+","AB","A+","O-","O+"),
stringsAsFactors = FALSE
)
# META DATA (use the short-built rule)
M_data <- data.frame(
VARIABLE = c("National_code", "Certificate_validity", "VisitDate",
"Test_date","LastName","Systolic_BP1","Systolic_BP2",
"Prescription_drug","Blood_type"),
Concordance_Rule = c(
"", "", "VisitDate<=Test_date", "Test_date-VisitDate < 7", "",
rule_bp, "", "", ""
),
TYPE=c("numeric","date","date","date","character",
"numeric","numeric","character","character"),
Concordance_Error_Type = c("type1",NA,"type2","type3",NA,NA,NA,NA,"type4"),
stringsAsFactors = FALSE
)
# test call
result <- concordance_check(S_data = S_data, M_data = M_data, Result = TRUE,
show_column = c("National_code"))
print(result)
Run the code above in your browser using DataLab