Nothing
#' Medical History Domain
#'
#' @name Medical History Domain
#' @description The Medical History data of an ImmPort study is reformated to the CDISC SDTM Medical
#' History (MH) domain model, and is a list of 2 data frames containing 1) Medical History
#' data \code{\link{MH}} and 2) any supplemental Medical History data \code{\link{SUPPMH}}
NULL
#> NULL
# call to globalVariables to prevent from generating NOTE: no visible binding for global variable <variable name>
# this hack is to satisfy CRAN (http://stackoverflow.com/questions/9439256/how-can-i-handle-r-cmd-check-no-visible-binding-for-global-variable-notes-when)
globalVariables(c("MHSEQ", "QNAM", "QVAL", "MHAGE", "MHAGEU", "MHTOD"))
# Get Medical History data of a specific study
#
# The function \code{getMedicalHistory} queries the ImmPort database for Medical History data and
# reformats it to the CDISC SDTM Medical History (MH) domain model
#
# @param data_src A connection handle to ImmPort (MySQL or SQLite) database instance or
# a directory handle to folder where study RDS files are located
# @param study_id Identifier of a specific study
# @return a list of 2 data frames containing 1) Medical History data \code{\link{MH}} and 2) any supplemental
# Medical History data \code{\link{SUPPMH}}
# @examples
# \dontrun{
# getMedicalHistory(data_src, "SDY1")
# }
#' @importFrom DBI dbGetQuery
#' @importFrom plyr rename
#' @importFrom data.table as.data.table is.data.table .N :=
getMedicalHistory <- function(data_src, study_id) {
cat("loading Medical History data....")
mh_cols <- c("STUDYID", "DOMAIN", "USUBJID","MHSEQ", "MHTERM", "MHCAT", "MHBODSYS", "MHAGE", "MHAGEU",
"MHTOD", "MHDY")
suppmh_cols <- c("STUDYID", "RDOMAIN", "USUBJID", "IDVAR", "IDVARVAL", "QNAM", "QLABEL", "QVAL")
# Note these cols should go to suppmh: MHAGE, MHAGEU and MHTOD
sql_stmt <- paste("SELECT distinct
asmp.study_accession,
\"MH\" as domain,
asmc.subject_accession,
cast(0 as UNSIGNED INTEGER) as seq,
asmc.name_reported,
asmp.name_reported,
asmc.organ_or_body_system_reported,
asmc.age_at_onset_reported,
asmc.age_at_onset_unit_reported,
asmc.time_of_day,
asmc.study_day
FROM assessment_component asmc
INNER JOIN
assessment_panel asmp ON asmc.assessment_panel_accession=asmp.assessment_panel_accession
WHERE asmp.study_accession in ('", study_id, "') AND
asmp.assessment_type='Medical History'
ORDER BY asmc.subject_accession", sep = "")
if ((class(data_src)[1] == 'MySQLConnection') ||
(class(data_src)[1] == 'SQLiteConnection')) {
mh_df <- dbGetQuery(data_src, statement = sql_stmt)
colnames(mh_df) <- mh_cols
suppmh_df <- data.frame()
if (nrow(mh_df) > 0) {
mh_df <- transform(mh_df, MHSEQ = as.integer(MHSEQ))
mh_dt <- as.data.table(mh_df)
if (is.data.table(mh_dt) == TRUE) {
mh_dt[, `:=`(MHSEQ, seq_len(.N)), by = "USUBJID"]
}
mh_df <- as.data.frame(mh_dt)
qnam_values = c("MHAGE", "MHAGEU", "MHTOD")
qlabel_values= c("Age at Onset", "Age at Onset Units", "Time of Day")
suppmh_df <- reshape2::melt(mh_df, id = c("STUDYID", "DOMAIN", "USUBJID", "MHSEQ"),
measure = qnam_values,
variable.name = "QNAM",
value.name = "QVAL")
suppmh_df <- transform(suppmh_df, QLABEL = unlist(qlabel_values[QNAM]))
suppmh_df <- plyr::rename(suppmh_df, c("DOMAIN" = "RDOMAIN", "MHSEQ" = "IDVARVAL"))
suppmh_df$IDVAR <- "MHSEQ"
suppmh_df <- suppmh_df[suppmh_cols]
# remove rows that have empty QVAL values
suppmh_df <- subset(suppmh_df,QVAL!="")
mh_df <- subset(mh_df, select = -c(MHAGE, MHAGEU, MHTOD))
}
} else {
l <- loadSerializedStudyData(data_src, study_id, "Medical History")
mh_df <- l[[1]]
suppmh_df <- l[[2]]
}
cat("done", "\n")
mh_l <- list()
if (nrow(mh_df) > 0)
mh_l <- list(mh_df=mh_df, suppmh_df=suppmh_df)
mh_l
}
# Get count of Medical History data of a specific study
#
# The function \code{getCountOfMedicalHistory} queries the ImmPort database for count
# of Medical History data
#
# @param conn A connection handle to ImmPort database instance
# @param study_id Identifier of a specific study
# @return a count of Medical History data
# @examples
# \dontrun{
# # get count of study SDY1's Medical History data
# count <- getCountOfMedicalHistory(conn, "SDY1")
# }
getCountOfMedicalHistory <- function(conn, study_id) {
sql_stmt <- paste("SELECT count(*)
FROM assessment_component asmc
INNER JOIN
assessment_panel asmp ON asmc.assessment_panel_accession=asmp.assessment_panel_accession
WHERE asmp.study_accession in ('", study_id, "') AND
asmp.assessment_type='Medical History'", sep = "")
count <- dbGetQuery(conn, statement = sql_stmt)
count[1, 1]
}
##' Medical History Domain Variables
##' @name MH
##' @description {
##' \tabular{ll}{
##' \strong{Variable Name } \tab \strong{Variable Label} \cr
##'
##' STUDYID \tab Study Identifier \cr
##' DOMAIN \tab Domain Abbreviation \cr
##' USUBJID \tab Unique Subject Identifier \cr
##' MHSEQ \tab Sequence Number \cr
##' MHTERM \tab Reported Term for the Medical History \cr
##' MHCAT \tab Category for Medical History \cr
##' MHBODSYS \tab Body System or Organ Class \cr
##' MHDY \tab Study Day of History Collection
##' }
##' }
NULL
#> NULL
##' Medical History Domain Supplemental Variables
##' @name SUPPMH
##' @description {
##' \tabular{ll}{
##' \strong{Variable Name} \tab \strong{Variable Label} \cr
##' STUDYID \tab Study Identifier \cr
##' RDOMAIN \tab Related Domain Abbreviation \cr
##' USUBJID \tab Unique Subject Identifier \cr
##' MHSEQ \tab Sequence Number \cr
##' IDVAR \tab Identifying Variable \cr
##' IDVARVAL \tab Identifying Variable Value \cr
##' QNAM \tab Qualifier Variable Name \cr
##' QLABEL \tab Qualifier Variable Label \cr
##' QVAL \tab Data Value
##' }
##' }
##' @note The following table enumerates the values in QNAM and QLABEL variables {
##' \tabular{ll}{
##' \strong{QNAM} \tab \strong{QLABEL} \cr
##' MHAGE \tab Age at Onset \cr
##' MHAGEU \tab Age at Onset Units \cr
##' MHTOD \tab Time of Day
##' }
##' }
NULL
#> NULL
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.