diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 0000000..2d19fc7 --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index 2c5bb50..dbfe63a 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -44,7 +44,7 @@ jobs: - name: Upload test results if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: coverage-test-failures + name: coverage-test-failures-${{ runner.temp }} path: ${{ runner.temp }}/package diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b6a065 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata diff --git a/DESCRIPTION b/DESCRIPTION index 11fe893..08f4cf3 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -23,9 +23,8 @@ Imports: lubridate, R6, ggplot2, - ggraph -Depends: - data.table + ggraph, + data.table RoxygenNote: 7.3.2 Suggests: knitr, diff --git a/NAMESPACE b/NAMESPACE index 89ee7a3..a700499 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -18,4 +18,13 @@ import(ggplot2) import(ggraph) import(igraph) importFrom(R6,R6Class) +importFrom(data.table,":=") +importFrom(data.table,.BY) +importFrom(data.table,.EACHI) +importFrom(data.table,.GRP) +importFrom(data.table,.I) +importFrom(data.table,.N) +importFrom(data.table,.NGRP) +importFrom(data.table,.SD) +importFrom(data.table,data.table) importFrom(stats,rnorm) diff --git a/R/DataManagement.R b/R/DataManagement.R index 60e0502..9013706 100644 --- a/R/DataManagement.R +++ b/R/DataManagement.R @@ -40,7 +40,8 @@ #' @examples #' ## create a "fake and custom" data base #' mydb = create_fake_subjectDB(n_subjects = 100, n_facilities = 100) -#' setnames(mydb, 1:4, c("myPatientId", "myHealthCareCenterID", "DateOfAdmission", "DateOfDischarge")) +#' data.table::setnames(mydb, 1:4, +#' c("myPatientId", "myHealthCareCenterID", "DateOfAdmission", "DateOfDischarge")) #' mydb[,DateOfAdmission:= as.character(DateOfAdmission)] #' mydb[,DateOfDischarge:= as.character(DateOfDischarge)] #' @@ -122,7 +123,7 @@ checkBase <- function(base, stop("Column(s) ", paste(notfound, collapse = ", "), " provided as argument were not found in the database.") } # Set column names to default - setnames(report$base, + data.table::setnames(report$base, old = c(subjectID, facilityID, admDate, disDate), new = c("sID", "fID", "Adate", "Ddate")) @@ -455,7 +456,7 @@ adjust_overlapping_stays = function(report, probBase[Nprob,..extraCols]) b=b[(b[, Adate] < b[, Ddate]),] probBase=rbind(a,b,c,d) - setnames(probBase,c("sID","fID","Adate","Ddate",extraCols)) #might not be needed here + data.table::setnames(probBase,c("sID","fID","Adate","Ddate",extraCols)) #might not be needed here }else{ a=data.table(sID=probBase[-Nprob][(C1&C2), sID],fID=probBase[-Nprob][(C1&C2), fID],Adate=probBase[-Nprob][(C1&C2), Adate],Ddate=probBase[-1][(C1&C2), Adate]) b=data.table(sID=probBase[-Nprob][(C1&C2), sID],fID=probBase[-Nprob][(C1&C2), fID],Adate=probBase[-1][(C1&C2), Ddate],Ddate=probBase[-Nprob][(C1&C2), Ddate]) @@ -463,7 +464,7 @@ adjust_overlapping_stays = function(report, d=data.table(sID=probBase[Nprob, sID],fID=probBase[Nprob, fID],Adate=probBase[Nprob, Adate],Ddate=probBase[Nprob, Ddate]) b=b[(b[, Adate] < b[, Ddate]),] probBase=rbind(a,b,c,d) - setnames(probBase,c("sID","fID","Adate","Ddate")) #might not be needed here + data.table::setnames(probBase,c("sID","fID","Adate","Ddate")) #might not be needed here } if (verbose) message("Combining and sorting") diff --git a/R/DataSummary.R b/R/DataSummary.R index 18bf5a8..78a0db7 100644 --- a/R/DataSummary.R +++ b/R/DataSummary.R @@ -98,15 +98,15 @@ per_facility_summary <- function(base, losPerHosp <- (base[, .(mean(difftime(Ddate, Adate, units = "days"))), by = fID]) # losPerHosp<-as.numeric(losPerHosp,units="days") - setnames(losPerHosp, c("node", "LOS")) + data.table::setnames(losPerHosp, c("node", "LOS")) data.table::setkey(losPerHosp, node) subjectsPerHosp <- base[, uniqueN(.SD), .SDcols = "sID", by = fID] - setnames(subjectsPerHosp, c("node", "subjects")) + data.table::setnames(subjectsPerHosp, c("node", "subjects")) data.table::setkey(subjectsPerHosp, node) admissionsPerHosp <- (base[, .N, by = fID]) - setnames(admissionsPerHosp, c("node", "admissions")) + data.table::setnames(admissionsPerHosp, c("node", "admissions")) data.table::setkey(admissionsPerHosp, node) sumStats <- Reduce( diff --git a/R/HospiNet.R b/R/HospiNet.R index b91576b..4db8963 100644 --- a/R/HospiNet.R +++ b/R/HospiNet.R @@ -603,7 +603,7 @@ HospiNet <- R6::R6Class("HospiNet", private$.hist_degrees <- merge(private$.hist_degrees, d_t, by.x = "degree", by.y = "degree_total", all.x = TRUE) private$.hist_degrees <- merge(private$.hist_degrees, d_i, by.x = "degree", by.y = "degree_in", all.x = TRUE) private$.hist_degrees <- merge(private$.hist_degrees, d_o, by.x = "degree", by.y = "degree_out", all.x = TRUE) - setnames(private$.hist_degrees, 2:4, c("total_degree", "in_degree", "out_degree")) + data.table::setnames(private$.hist_degrees, 2:4, c("total_degree", "in_degree", "out_degree")) private$.hist_degrees } else { stop("`$hist_degrees` is read only", call. = FALSE) diff --git a/R/HospitalNetwork-package.R b/R/HospitalNetwork-package.R new file mode 100644 index 0000000..0a029b6 --- /dev/null +++ b/R/HospitalNetwork-package.R @@ -0,0 +1,15 @@ +#' @keywords internal +"_PACKAGE" + +## usethis namespace: start +#' @importFrom data.table := +#' @importFrom data.table .BY +#' @importFrom data.table .EACHI +#' @importFrom data.table .GRP +#' @importFrom data.table .I +#' @importFrom data.table .N +#' @importFrom data.table .NGRP +#' @importFrom data.table .SD +#' @importFrom data.table data.table +## usethis namespace: end +NULL diff --git a/R/NetworkBuilding.R b/R/NetworkBuilding.R index 5306aa8..a84e7f4 100644 --- a/R/NetworkBuilding.R +++ b/R/NetworkBuilding.R @@ -66,9 +66,9 @@ matrix_from_edgelist <- function(edgelist, edgelist <- edgelist[, .N, by = c(origin_name, target_name)] # group identical couples } if (!format_long) { - setnames(edgelist, old = count, new = "N") + data.table::setnames(edgelist, old = count, new = "N") } - setnames(edgelist, + data.table::setnames(edgelist, old = c(origin_name, target_name), new = c("origin", "target") ) diff --git a/inst/app/mod_database.R b/inst/app/mod_database.R index 6cd2051..44aa005 100644 --- a/inst/app/mod_database.R +++ b/inst/app/mod_database.R @@ -69,7 +69,7 @@ mod_database_server <- function(input, output, session, base) byfacil = reactive({ tmp = HospitalNetwork::per_facility_summary(base()) tmp[, LOS := as.difftime(tim = round(LOS, digits = 2), units = "days")] - setnames(tmp, + data.table::setnames(tmp, old = c("node", "LOS", "admissions", "subjects"), new = c("Facility ID", "Mean LOS", "Total number of admissions", "Distinct subjects admitted") ) diff --git a/man/HospitalNetwork-package.Rd b/man/HospitalNetwork-package.Rd new file mode 100644 index 0000000..553048d --- /dev/null +++ b/man/HospitalNetwork-package.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/HospitalNetwork-package.R +\docType{package} +\name{HospitalNetwork-package} +\alias{HospitalNetwork} +\alias{HospitalNetwork-package} +\title{HospitalNetwork: Building Networks of Hospitals Through Patients Transfers} +\description{ +Set of tools to help interested researchers to build hospital networks from data on hospitalized patients transferred between hospitals. Methods provided have been used in Donker T, Wallinga J, Grundmann H. (2010) \doi{10.1371/journal.pcbi.1000715}, and Nekkab N, Crépey P, Astagneau P, Opatowski L, Temime L. (2020) \doi{10.1038/s41598-020-71212-6}. +} +\seealso{ +Useful links: +\itemize{ + \item \url{https://pascalcrepey.github.io/HospitalNetwork/} + \item Report bugs at \url{https://github.com/PascalCrepey/HospitalNetwork/issues} +} + +} +\author{ +\strong{Maintainer}: Pascal Crépey \email{pascal.crepey@ehesp.fr} [copyright holder] + +Authors: +\itemize{ + \item Tjibbe Donker \email{tjibbe.donker@uniklinik-freiburg.de} + \item Clément Massonnaud \email{clement.massonnaud@gmail.com} + \item Michael Lydeamore \email{michael.lydeamore@monash.edu} +} + +} +\keyword{internal} diff --git a/man/checkBase.Rd b/man/checkBase.Rd index 3e12eb1..d15f8dd 100644 --- a/man/checkBase.Rd +++ b/man/checkBase.Rd @@ -67,7 +67,8 @@ Function that performs various checks to ensure the database is correctly format \examples{ ## create a "fake and custom" data base mydb = create_fake_subjectDB(n_subjects = 100, n_facilities = 100) -setnames(mydb, 1:4, c("myPatientId", "myHealthCareCenterID", "DateOfAdmission", "DateOfDischarge")) +data.table::setnames(mydb, 1:4, + c("myPatientId", "myHealthCareCenterID", "DateOfAdmission", "DateOfDischarge")) mydb[,DateOfAdmission:= as.character(DateOfAdmission)] mydb[,DateOfDischarge:= as.character(DateOfDischarge)] diff --git a/tests/testthat/test-adjust_overlaps.R b/tests/testthat/test-adjust_overlaps.R index 6593b57..25bb739 100644 --- a/tests/testthat/test-adjust_overlaps.R +++ b/tests/testthat/test-adjust_overlaps.R @@ -205,9 +205,9 @@ baseCorrDis[, `:=`(adm = as.Date(adm), dis = as.Date(dis))] setkey(baseCorrDis, sID, adm) -setnames(baseCorrDis, c("adm", "dis"), c("Adate", "Ddate")) -setnames(baseOver, c("adm", "dis"), c("Adate", "Ddate")) -setnames(baseCorrAdm, c("adm", "dis"), c("Adate", "Ddate")) +data.table::setnames(baseCorrDis, c("adm", "dis"), c("Adate", "Ddate")) +data.table::setnames(baseOver, c("adm", "dis"), c("Adate", "Ddate")) +data.table::setnames(baseCorrAdm, c("adm", "dis"), c("Adate", "Ddate")) #=== TESTS ========================================================== report = list()