@@ -52,3 +52,90 @@ test_that("get_main_genie_clinical_id returns NULL when data_clinical.txt does n
5252 result <- get_main_genie_clinical_id(release )
5353 expect_null(result )
5454})
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