@@ -52,3 +52,90 @@ test_that("get_main_genie_clinical_id returns NULL when data_clinical.txt does n
52
52
result <- get_main_genie_clinical_id(release )
53
53
expect_null(result )
54
54
})
55
+
56
+ test_that(" remap_patient_characteristics works as expected" , {
57
+
58
+ # Mock input data
59
+ clinical <- data.frame (
60
+ patient_id = c(1 , 2 , 3 ),
61
+ birth_year = c(1980 , 1990 , 2000 ),
62
+ ethnicity_detailed = c(" Hispanic" , " Non-Hispanic" , " Hispanic" ),
63
+ primary_race_detailed = c(" White" , " Black" , " Asian" ),
64
+ secondary_race_detailed = c(" Unknown" , " White" , " Black" ),
65
+ tertiary_race_detailed = c(" Asian" , " Unknown" , " White" ),
66
+ sex_detailed = c(" Male" , " Female" , " Male" )
67
+ )
68
+
69
+ existing_patients <- c(1 , 2 , 3 )
70
+
71
+ ethnicity_mapping <- data.frame (
72
+ DESCRIPTION = c(" Hispanic" , " Non-Hispanic" ),
73
+ CODE = c(" 1" , " 2" )
74
+ )
75
+
76
+ race_mapping <- data.frame (
77
+ DESCRIPTION = c(" White" , " Black" , " Asian" , " Unknown" ),
78
+ CODE = c(" 1" , " 2" , " 3" , " 99" )
79
+ )
80
+
81
+ sex_mapping <- data.frame (
82
+ DESCRIPTION = c(" Male" , " Female" ),
83
+ CODE = c(" M" , " F" )
84
+ )
85
+
86
+ # Expected output
87
+ expected_output <- data.frame (
88
+ record_id = c(1 , 2 , 3 ),
89
+ redcap_repeat_instrument = c(" " , " " , " " ),
90
+ redcap_repeat_instance = c(" " , " " , " " ),
91
+ genie_patient_id = c(1 , 2 , 3 ),
92
+ birth_year = c(1980 , 1990 , 2000 ),
93
+ naaccr_ethnicity_code = c(" 1" , " 2" , " 1" ),
94
+ naaccr_race_code_primary = c(" 1" , " 2" , " 3" ),
95
+ naaccr_race_code_secondary = c(" 99" , " 1" , " 2" ),
96
+ naaccr_race_code_tertiary = c(" 3" , " 99" , " 1" ),
97
+ naaccr_sex_code = c(" M" , " F" , " M" )
98
+ )
99
+
100
+ # Run the function
101
+ result <- remap_patient_characteristics(clinical , existing_patients , ethnicity_mapping , race_mapping , sex_mapping )
102
+
103
+ # Test if the output is as expected
104
+ expect_equal(result , expected_output )
105
+ })
106
+
107
+ test_that(" check_for_missing_values - no missing or empty values" , {
108
+ data <- data.frame (
109
+ col1 = c(1 , 2 , 3 ),
110
+ col2 = c(" a" , " b" , " c" ),
111
+ genie_patient_id = c(" a" , " b" , " CHOP123" ),
112
+ naaccr_race_code_tertiary = c(" a" , " b" , " c" ),
113
+ naaccr_race_code_secondary = c(" a" , " b" , " c" )
114
+ )
115
+ expect_no_warning(check_for_missing_values(data , c(" col1" , " col2" , " naaccr_race_code_tertiary" , " naaccr_race_code_secondary" )))
116
+
117
+ })
118
+
119
+ test_that(" check_for_missing_values - missingness values are detected in NAACCR code columns in centers other than CHOP, PROV, JHU" , {
120
+ data <- data.frame (
121
+ col1 = c(1 , NA , " " ),
122
+ col2 = c(" a" , " b" , " c" ),
123
+ genie_patient_id = c(" CHOP123" , " b" , " PROV234" ),
124
+ naaccr_race_code_tertiary = c(" a" , " " , " c" ),
125
+ naaccr_race_code_secondary = c(" a" , " b" , " c" )
126
+ )
127
+ expect_warning(check_for_missing_values(data , c(" col1" , " col2" , " naaccr_race_code_tertiary" , " naaccr_race_code_secondary" )),
128
+ " Warning: Missing or empty values found in column\\ (s\\ ): naaccr_race_code_tertiary, col1" )
129
+ })
130
+
131
+ test_that(" check_for_missing_values - missingness values are detected in NAACCR code columns in CHOP, PROV, JHU centers" , {
132
+ data <- data.frame (
133
+ col1 = c(1 , NA , " " ),
134
+ col2 = c(" a" , " " , " c" ),
135
+ genie_patient_id = c(" CHOP123" , " b" , " PROV234" ),
136
+ naaccr_race_code_tertiary = c(" " , " b" , " c" ),
137
+ naaccr_race_code_secondary = c(" a" , " b" , NA )
138
+ )
139
+ expect_warning(check_for_missing_values(data , c(" col1" , " col2" , " naaccr_race_code_tertiary" , " naaccr_race_code_secondary" )),
140
+ " Warning: Missing or empty values found in column\\ (s\\ ): col2, col1" )
141
+ })
0 commit comments