import axios from 'axios';
import { saveData } from '../utils/file-saver.js';
export class YouthMentalHealthScraper {
constructor(dataDir) {
this.dataDir = dataDir;
this.sourceUrl = 'https://data.cdc.gov/resource/eze9-ahe5.json?$limit=50000';
}
async scrapeAll() {
try {
console.error('Scraping youth mental health ED data from data.cdc.gov...');
const response = await axios.get(this.sourceUrl, {
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
},
timeout: 60000
});
const records = response.data;
const normalizedData = records.map(record => this.normalizeRecord(record));
await saveData(this.dataDir, 'youth_ed_mental_health.json', normalizedData);
console.error(`Youth mental health ED data scraped: ${normalizedData.length} records`);
return normalizedData;
} catch (error) {
console.error('Error scraping youth mental health ED data:', error.message);
const sampleData = this.generateSampleYouthMentalHealthData();
await saveData(this.dataDir, 'youth_ed_mental_health.json', sampleData);
return sampleData;
}
}
normalizeRecord(record) {
return {
geography: 'USA',
date: `${record.month_end}-01`,
condition: record.condition,
demographics_type: record.demographics_type,
demographics_values: record.demographics_values,
rate_per_100000_visits: parseFloat(record.rate_per_100000_visits) || 0,
source: 'CDC NSSP',
last_updated: new Date().toISOString().split('T')[0]
};
}
generateSampleYouthMentalHealthData() {
return [
{
geography: 'USA',
date: '2023-12-01',
condition: 'Anxiety Disorders',
demographics_type: 'Age',
demographics_values: '12-17 years',
rate_per_100000_visits: 450.5,
source: 'CDC NSSP (Sample)',
last_updated: new Date().toISOString().split('T')[0]
},
{
geography: 'USA',
date: '2023-12-01',
condition: 'Mood Disorders',
demographics_type: 'Sex',
demographics_values: 'Female',
rate_per_100000_visits: 600.2,
source: 'CDC NSSP (Sample)',
last_updated: new Date().toISOString().split('T')[0]
},
{
geography: 'USA',
date: '2023-12-01',
condition: 'Substance Use Disorders',
demographics_type: 'Race/Ethnicity',
demographics_values: 'Hispanic',
rate_per_100000_visits: 250.8,
source: 'CDC NSSP (Sample)',
last_updated: new Date().toISOString().split('T')[0]
}
];
}
}