whichPatientDrug: Match patients against a look-up table of treatments

Description Usage Arguments Value Note Author(s) See Also Examples

View source: R/hospCodesFns.R

Description

Determine which patients are susceptible or resistant to the guideline drugs, accounting for age category and other user defined covariates.

Usage

1
whichPatientDrug(inf.data, drugGuideline.data, patientdrugs)

Arguments

inf.data

Linked HES-LabBase2 data set of exposed patients.

drugGuideline.data

A data.frame of which antibiotics are first-line treatments for which pathogen.

patientdrugs

List of drugs per patient.

Value

returns: A list of susceptible or resistant status per patient:

Per drug

TRUE entry if guideline antibiotic and resistant/susceptible

Aggregated across all drugs

TRUE entry if guideline antibiotic and resistant/susceptible

Note

This is an alternative to the whichPatientDrug.join function which uses joining operations.

Author(s)

N. Green

See Also

AgeCatModify, whichPatientDrug.joins

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
data(infdata_sample)
data(antibioticLookup)

drug.names <<- factor(c("AMPAMOX","CTX","CTZ","CTRI","GENT","IMI","MERO",
                        "MET","PIPTAZ","CoNSmet","AMINOAMOX1","AMINOMET1","AMINOVAN1","CTXI1",
                        "pen","met","van2","AMINOAMOXAMP1","AMINOPIPTAZ1","AMINOCTZ1","AMINOIMI1","AMINOMER1","CTXI2"))

##################
# 0: susceptible #
# 1: resistant   #
# NA: not tested #
##################

## extract drug columns from original inf.data dataset
inf.drug.data <- infdata_sample[, paste("lab_",drug.names,sep="")]
inf.drug.data <- data.frame(lapply(inf.drug.data, factor))

## make a list of the drugs administered to each patient
## for each response type

patientdrugs.res <- patientdrugs.sus <- list()
for (i in 1:nrow(inf.drug.data)){ # each patient
  patientdrugs.res[[i]] <- drug.names[!is.na(inf.drug.data[i,]) & inf.drug.data[i,]==1]  # resistant 
  patientdrugs.sus[[i]] <- drug.names[!is.na(inf.drug.data[i,]) & inf.drug.data[i,]==0]  # susceptible
}

whichPatientDrug.res <- whichPatientDrug(infdata_sample, antibioticLookup.dat, patientdrugs.res)
whichPatientDrug.sus <- whichPatientDrug(infdata_sample, antibioticLookup.dat, patientdrugs.sus)





## The function is currently defined as
function (inf.data, drugGuideline.data, patientdrugs) 
{
    npatient <- length(patientdrugs)
    ndrugs <- length(drug.names)
    nguidelines <- nrow(drugGuideline.data)
    FollowGuideline.tot <- rep(FALSE, npatient)
    FollowGuideline.indiv <- matrix(NA, nrow = npatient, ncol = ndrugs)
    colnames(FollowGuideline.indiv) <- drug.names
    patient.age_cat <- AgeCatModify(inf.data)
    for (i in 1:nguidelines) {
        if (drugGuideline.data$drug_code[i] != "" & drugGuideline.data$drug_code[i] %in% 
            drug.names) {
            drugMatch <- sapply(patientdrugs, function(x) drugGuideline.data$drug_code[i] %in% 
                x) & (drugGuideline.data$ageCat[i] == patient.age_cat | 
                drugGuideline.data$ageCat[i] == "") & (toupper(drugGuideline.data$suspected_organism[i]) == 
                inf.data$lab_organismname | toupper(drugGuideline.data$suspected_organism[i]) == 
                inf.data$lab_group | toupper(drugGuideline.data$suspected_organism[i]) == 
                "")
            drugCol <- as.character(drugGuideline.data$drug_code[i])
            FollowGuideline.indiv[, drugCol] <- FollowGuideline.indiv[, 
                drugCol] | drugMatch
            FollowGuideline.tot <- FollowGuideline.tot | drugMatch
        }
    }
    list(indiv = FollowGuideline.indiv, all = FollowGuideline.tot)
  }

n8thangreen/HESmanip documentation built on March 21, 2020, 12:20 a.m.