Skip to content

Instantly share code, notes, and snippets.

@untoldone
Last active December 31, 2015 19:39
Show Gist options
  • Save untoldone/8034463 to your computer and use it in GitHub Desktop.
Save untoldone/8034463 to your computer and use it in GitHub Desktop.
Export NPIs as json objects. Run it from the root of the bloomapi directory while the bloom server is running on port 3000 on the same machine.
var pg = require('./lib/sources/pg'),
http = require('http'),
fs = require('fs'),
Q = require('q'),
path = './dump.json',
fileStream = fs.createWriteStream(path, {flags: 'w'}),
p;
fileStream.write("[\n");
Q.ninvoke(pg, 'query', 'SELECT npi FROM npis')
.then(function (results) {
var promise = Q(),
first = true,
count = 0;
results.rows.forEach(function (row) {
promise = Q.when(promise, function () {
var deferred = Q.defer();
http.get('http://localhost:3000/api/npis/' + row['npi'], function (res) {
var buffer = '';
res.on('data', function (chunk) {
buffer += chunk;
});
res.on('end', function (chunk) {
var j;
if (chunk) {
buffer += chunk;
}
j = JSON.parse(buffer);
if (first) {
first = false;
} else {
fileStream.write(",\n");
}
count += 1;
if (count % 1000 === 0 || count === results.rows.length) {
console.log('Written ' + count + ' of ' + results.rows.length);
}
fileStream.write(JSON.stringify(j.result));
deferred.resolve(first);
});
res.on('error', function (e) {
deferred.reject(e);
});
});
return deferred.promise;
});
});
return promise;
})
.fail(function (e) {
console.error("Error:\n", e.stack);
process.exit(1);
})
.done(function () {
console.log('Completed. Results written to "' + path + '"');
fileStream.end("\n]\n");
pg.end();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment