Skip to content

Commit 16bc7ea

Browse files
committed
Initial csvParse option in the config
1 parent 917400a commit 16bc7ea

16 files changed

+39
-31
lines changed

config/csv.config.example.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
{
22
"patientIdCsvPath": "Users/YourAccount/absolute/path/to/patient-mrns.csv",
33
"commonExtractorArgs": {
4-
"dataDirectory": "Users/YourAccount/absolute/path/to/data/directory"
4+
"dataDirectory": "Users/YourAccount/absolute/path/to/data/directory",
5+
"csvParse": {
6+
"options": {
7+
"bom": true
8+
}
9+
}
510
},
611
"notificationInfo": {
712
"host": "smtp.example.com",

src/extractors/BaseCSVExtractor.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,27 @@ const logger = require('../helpers/logger');
66

77
class BaseCSVExtractor extends Extractor {
88
constructor({
9-
filePath, url, fileName, dataDirectory, csvSchema, unalterableColumns,
9+
filePath, url, fileName, dataDirectory, csvSchema, unalterableColumns, csvParse
1010
}) {
1111
super();
1212
this.unalterableColumns = unalterableColumns || [];
1313
this.csvSchema = csvSchema;
14+
this.parserOptions = csvParse && csvParse.options ? csvParse.options : {};
1415
if (url) {
1516
logger.debug('Found url argument; creating a CSVURLModule with the provided url');
1617
this.url = url;
17-
this.csvModule = new CSVURLModule(this.url, this.unalterableColumns);
18+
this.csvModule = new CSVURLModule(this.url, this.unalterableColumns, this.parserOptions);
1819
} else if (fileName && dataDirectory) {
1920
if (!path.isAbsolute(dataDirectory)) throw new Error('dataDirectory is not an absolutePath, it needs to be.');
2021
this.filePath = path.join(dataDirectory, fileName);
2122
logger.debug(
2223
'Found fileName and dataDirectory arguments; creating a CSVFileModule with the provided dataDirectory and fileName',
2324
);
24-
this.csvModule = new CSVFileModule(this.filePath, this.unalterableColumns);
25+
this.csvModule = new CSVFileModule(this.filePath, this.unalterableColumns, this.parserOptions);
2526
} else if (filePath) {
2627
logger.debug('Found filePath argument; creating a CSVFileModule with the provided filePath');
2728
this.filePath = filePath;
28-
this.csvModule = new CSVFileModule(this.filePath, this.unalterableColumns);
29+
this.csvModule = new CSVFileModule(this.filePath, this.unalterableColumns, this.parserOptions);
2930
} else {
3031
logger.debug(
3132
'Could not instantiate a CSVExtractor with the provided constructor args',

src/extractors/CSVAdverseEventExtractor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ function formatData(adverseEventData, patientId) {
6969
}
7070

7171
class CSVAdverseEventExtractor extends BaseCSVExtractor {
72-
constructor({ filePath, url, fileName, dataDirectory }) {
73-
super({ filePath, url, fileName, dataDirectory });
72+
constructor({ filePath, url, fileName, dataDirectory, csvParse }) {
73+
super({ filePath, url, fileName, dataDirectory, csvParse });
7474
}
7575

7676
async getAdverseEventData(mrn) {

src/extractors/CSVCTCAdverseEventExtractor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ function formatData(adverseEventData, patientId) {
109109
}
110110

111111
class CSVCTCAdverseEventExtractor extends BaseCSVExtractor {
112-
constructor({ filePath, url, fileName, dataDirectory }) {
113-
super({ filePath, url, fileName, dataDirectory });
112+
constructor({ filePath, url, fileName, dataDirectory, csvParse }) {
113+
super({ filePath, url, fileName, dataDirectory, csvParse });
114114
}
115115

116116
async getAdverseEventData(mrn) {

src/extractors/CSVCancerDiseaseStatusExtractor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ const { CSVCancerDiseaseStatusSchema } = require('../helpers/schemas/csv');
99

1010
class CSVCancerDiseaseStatusExtractor extends BaseCSVExtractor {
1111
constructor({
12-
filePath, url, fileName, dataDirectory, implementation,
12+
filePath, url, fileName, dataDirectory, csvParse, implementation
1313
}) {
14-
super({ filePath, url, fileName, dataDirectory, csvSchema: CSVCancerDiseaseStatusSchema });
14+
super({ filePath, url, fileName, dataDirectory, csvSchema: CSVCancerDiseaseStatusSchema, csvParse });
1515
this.implementation = implementation;
1616
}
1717

src/extractors/CSVCancerRelatedMedicationAdministrationExtractor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ function formatData(medicationData, patientId) {
4646
}
4747

4848
class CSVCancerRelatedMedicationAdministrationExtractor extends BaseCSVExtractor {
49-
constructor({ filePath, url, fileName, dataDirectory }) {
50-
super({ filePath, url, fileName, dataDirectory });
49+
constructor({ filePath, url, fileName, dataDirectory, csvParse }) {
50+
super({ filePath, url, fileName, dataDirectory, csvParse });
5151
}
5252

5353
async getMedicationData(mrn) {

src/extractors/CSVCancerRelatedMedicationRequestExtractor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ function formatData(medicationData, patientId) {
4848
}
4949

5050
class CSVCancerRelatedMedicationRequestExtractor extends BaseCSVExtractor {
51-
constructor({ filePath, url, fileName, dataDirectory }) {
52-
super({ filePath, url, fileName, dataDirectory });
51+
constructor({ filePath, url, fileName, dataDirectory, csvParse }) {
52+
super({ filePath, url, fileName, dataDirectory, csvParse });
5353
}
5454

5555
async getMedicationData(mrn) {

src/extractors/CSVClinicalTrialInformationExtractor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const { CSVClinicalTrialInformationSchema } = require('../helpers/schemas/csv');
99

1010
class CSVClinicalTrialInformationExtractor extends BaseCSVExtractor {
1111
constructor({
12-
filePath, url, fileName, dataDirectory, clinicalSiteID, clinicalSiteSystem,
12+
filePath, url, fileName, dataDirectory, csvParse, clinicalSiteID, clinicalSiteSystem
1313
}) {
1414
super({ filePath, url, fileName, dataDirectory, csvSchema: CSVClinicalTrialInformationSchema });
1515
if (!clinicalSiteID) logger.warn(`${this.constructor.name} expects a value for clinicalSiteID but got ${clinicalSiteID}`);

src/extractors/CSVConditionExtractor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ function formatData(conditionData, patientId) {
4949
}
5050

5151
class CSVConditionExtractor extends BaseCSVExtractor {
52-
constructor({ filePath, url, fileName, dataDirectory }) {
53-
super({ filePath, url, fileName, dataDirectory, csvSchema: CSVConditionSchema });
52+
constructor({ filePath, url, fileName, dataDirectory, csvParse }) {
53+
super({ filePath, url, fileName, dataDirectory, csvSchema: CSVConditionSchema, csvParse });
5454
}
5555

5656
async getConditionData(mrn) {

src/extractors/CSVObservationExtractor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ function formatData(observationData, patientId) {
4242
}
4343

4444
class CSVObservationExtractor extends BaseCSVExtractor {
45-
constructor({ filePath, url, fileName, dataDirectory }) {
46-
super({ filePath, url, fileName, dataDirectory });
45+
constructor({ filePath, url, fileName, dataDirectory, csvParse }) {
46+
super({ filePath, url, fileName, dataDirectory, csvParse });
4747
}
4848

4949
async getObservationData(mrn) {

0 commit comments

Comments
 (0)