From 049fa779b80ac4d89c3654db96b55339207a8d8a Mon Sep 17 00:00:00 2001 From: Jubilee Tan Date: Thu, 19 Dec 2024 08:36:31 -0600 Subject: [PATCH 1/2] add file --- .Rbuildignore | 1 + DESCRIPTION | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.Rbuildignore b/.Rbuildignore index 91114bf..e13c405 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -1,2 +1,3 @@ ^.*\.Rproj$ ^\.Rproj\.user$ +^LICENSE\.md$ diff --git a/DESCRIPTION b/DESCRIPTION index da13151..4a9fd38 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -5,7 +5,7 @@ Version: 0.4.0 Author: Jubilee Maintainer: Jubilee Description: A collection of reusable functions to streamline and enhance the functionality of REDCap projects. This package includes functions for parsing logging strings, converting data types, and more. -License: MIT +License: MIT + file LICENSE Encoding: UTF-8 LazyData: true Suggests: From 0b15b2845edffed62d0d644aae625e3e72543065 Mon Sep 17 00:00:00 2001 From: Jubilee Tan Date: Thu, 19 Dec 2024 08:52:13 -0600 Subject: [PATCH 2/2] modified: R/logReport.R --- R/logReport.R | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/R/logReport.R b/R/logReport.R index 6d11bb4..602915a 100644 --- a/R/logReport.R +++ b/R/logReport.R @@ -1,13 +1,21 @@ queryLogSummary <- function(logs) { - # Function implementation - o <- logDetailsParseDQ(logs$details) - logs$Action <- sapply(o, function(x) if (is.null(x$Action)) NA else x$Action) - logs$Record <- sapply(o, function(x) if (is.null(x$Record)) NA else x$Record) - logs$Event <- sapply(o, function(x) if (is.null(x$Event)) NA else x$Event) - logs$Field <- sapply(o, function(x) if (is.null(x$Field)) NA else x$Field) - logs$Comment <- sapply(o, function(x) if (is.null(x$Comment)) NA else x$Comment) - logs$`Data Quality Rule` <- sapply(o, function(x) if (is.null(x$`Data Quality Rule`)) NA else x$`Data Quality Rule`) + # Parse the log details for data quality + parsedDetails <- logDetailsParseDQ(logs$details) - selector <- sapply(o, length) > 0 + # Function to extract a specific field from a list of details + # details: list of parsed log details + # field: the field to extract from each detail + applyExtractField <- function(details, field) { + vapply(details, function(x) ifelse(is.null(x[[field]]), NA_character_, x[[field]]), FUN.VALUE = character(1)) + } + + logs$Action <- applyExtractField(parsedDetails, "Action") + logs$Record <- applyExtractField(parsedDetails, "Record") + logs$Event <- applyExtractField(parsedDetails, "Event") + logs$Field <- applyExtractField(parsedDetails, "Field") + logs$Comment <- applyExtractField(parsedDetails, "Comment") + logs$`Data Quality Rule` <- applyExtractField(parsedDetails, "Data Quality Rule") + + selector <- sapply(parsedDetails, length) > 0 logs[selector,c("timestamp", "username", "Action","Record","Event","Field","Data Quality Rule","Comment")] }