knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

Context

This R package contains functions to help interested researchers construct networks from data on movement of individual between locations. Although this package was initially developed in the context of networks of healthcare facilities, where the links represent transfer of subjects between facilities, the process can be generalized to the movement of any type of subject between any type of locations.

Formally, a network is composed of nodes which may or may not be connected by edges (or links). In the context of this package, the nodes are the facilities, and the links represent connections between facilities. Although the definition of a node is straightforward, one can define a connection between two facilities in different ways. This package allows to construct a network using various definition of a connection, which are discussed in detail here [ref].

In terms of data structure, a common way of representing a network is with a simple $n*n$ matrix (often called adjacency matrix, or contact matrix). The rows and columns contain the nodes (which appear once in each), and each cell contains the information on whether or not the two nodes are connected.

data = c(0,0,602,0,339,687,0,0,0,0,373,1294,0,718,86,296,263,0,0,35,0,598,0,0,0)
mat = matrix(data, nrow = 5, ncol = 5)
colnames(mat) = LETTERS[1:5]
rownames(mat) = colnames(mat)
pander::pandoc.table(mat, caption = 'Example of a matrix representation of a 5-nodes network. By convention, the rows contain the facilities of origin, and the columns contain the target facilities. Each cell contains the number of subjects transfered.', )

At its core, the purpose of this package is to compute the contact matrix from raw data on movement between facilities. Additionally, this package provides the researcher with various tools to analyze and visualize the constructed network.

Data

The package requires a minimal set of information in order to build a network of facilities. This set of data is describe under the section "Required data". To proceed to further analysis, the package can use additional information in case they are available. These informations are listed under the section "Optional informations".

Required data

The minimal data needed to construct the network is a simple table with four variables:

Therefore, each row must correspond to a unique stay of a subject in a facility. Stays are not allowed to overlap (see Data management).

library(HospitalNetwork)
data = create_fake_subjectDB(n_subjects = 3, n_facilities = 3)
data

Optional data (in the same database)

TODO

| Item | Variable name | Description | |---------------|:-----------------:|-----------------------------| |Mode of entry | entry | a variable indicating whether the subject arrived from home (0), or from a facility (1) | |Mode of discharge | discharge | a variable indicating whether the subject is discharged back home (0), or to a facility (1) | |Subject residential postcode | postcode | a variable indicating the postal code of the subject residency | |Wards visited by the subject | ward | a single type of ward predominantly visited by the subject, coded as 1 for ICU or acute care and 0 for others |

Optional data (in a separate database)

TODO

|Item| Variable name |Description| |----|:-------------:|-----------| |Facility localization| localization | GPS coordinates of the facility| |Facility capacity | capacity | the number of beds available in the facility| |Facility type | type | the type of facility (ECDC level definitions)|

Workflow

The main function of the package is hospinet_from_subject_database(), which takes the database as argument. It will first performs various diagnostic tests by calling the function checkBase(), to check for possible issues, and to ensure that the data is formatted correctly.

If the tests are successful, hospinet_from_subject_database() will proceed with several operations and function calls to construct the network. The return value is an HospiNet R6 object that contains the network itself, as well as different metrics and information on the network.

Diagnostic tests {#diag}

The diagnostic tests on the database are performed by the function checkBase().

The function will check for possible errors in the database. It also offer the possibility to automatically correct the issues it may have found in the database. However, since we cannot guarantee having checked for every possible issue, we encourage you to ensure the data is in the correct format, and is free of errors, prior to run the function. By default, checkBase() will not modify the database, but return informative messages on the issues found. If you wish the function to try to autocorrect the database, you must set the corresponding arguments (see Data management). We recommend that you carefully check the result afterwards.

# Example
library(HospitalNetwork)
base = create_fake_subjectDB(n_subjects = 100, n_facilities = 10, with_errors = TRUE)
checkBase(base)

Requirements

The requirements to pass the diagnostic tests are the following:

Data management {#datamanagement}

The diagnostic functions of checkBase() will check for the following issues:

You can use the function checkBase() to try to correct automatically the issues it has found by setting the corresponding arguments.

The HospiNet object

HospiNet is an R6 object containing the facility matrix as well as specific information regarding the network. We have developed a summary and a print method for this object. The information contained in an HospiNet objects are:

Using the package

library(HospitalNetwork)
mydbmed = create_fake_subjectDB(n_subjects = 100, n_facilities = 10)
hn = hospinet_from_subject_database(base = mydbmed, noloops = FALSE)
hn
plot(hn)
plot(hn, type = "degree")
plot(hn , type = "clustered_matrix")
mydb = create_fake_subjectDB_clustered(n_subjects = 10000, n_facilities = 100, n_clusters = 5)
hn = hospinet_from_subject_database(base = mydb, noloops = FALSE)
hn
plot(hn)
plot(hn, type = "degree")
plot(hn , type = "clustered_matrix")
plot(hn , type = "circular_network")


PascalCrepey/HospitalNetwork documentation built on March 7, 2023, 5:41 a.m.