Skip to content

Commit

Permalink
Merge pull request #83 from HelioStrike/ATLAS-170
Browse files Browse the repository at this point in the history
ATLAS-170: Allow admin to download Atlas data as CSV
  • Loading branch information
bmamlin committed Jul 3, 2019
2 parents 6235951 + 1c3cbb6 commit 4aa8779
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 6 deletions.
25 changes: 25 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"extend": "^3.0.2",
"fresh": "^0.5.2",
"hoek": "^6.1.3",
"json2csv": "^4.5.1",
"ldapjs": "^1.0.2",
"log4js": "^4.2.0",
"mime": "^2.4.4",
Expand Down
49 changes: 43 additions & 6 deletions routes/markers.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ var express = require('express');
var router = express.Router();
var uuid = require('uuid');
var utils = require('../utils.js');
var stream = require('stream');
var { Parser } = require('json2csv');

module.exports = function(connection) {

Expand Down Expand Up @@ -73,6 +75,41 @@ module.exports = function(connection) {

});

/* GET all the markers */
router.get('/markers/download', utils.isAdmin, function(req, res, next) {

var query = "SELECT atlas.id as id,latitude,longitude,atlas.name as site_name,url,type,image,patients,encounters,observations,contact,email,notes,data,atlas_version,date_created,date_changed,created_by,show_counts,openmrs_version,distributions.name as distribution FROM atlas LEFT JOIN distributions on atlas.distribution=distributions.id";

connection.query(query, function (error, rows, field) {
if(!!error){
console.log(error);
}
else{
var fields = ['id','latitude','longitude','site_name','url','type','image','show_counts','patients','encounters','observations','contact','email','notes','data','atlas_version','openmrs_version','distribution','date_created','date_changed','created_by'];
var opts = { fields };

try {
const parser = new Parser(opts);
const csv = parser.parse(rows);

var fileName = 'atlas.csv';

var readStream = new stream.PassThrough();
readStream.end(csv);

res.set('Content-disposition', 'attachment; filename=' + fileName);
res.set('Content-Type', 'text/plain');

readStream.pipe(res);

} catch (err) {
console.error(err);
}
}
});

});

/* Get a specific marker with id parameter */
router.get('/marker/:id', function (req, res, next) {

Expand Down Expand Up @@ -117,7 +154,7 @@ module.exports = function(connection) {
var email=req.body.email;
var notes=req.body.notes;
var data=req.body.data;
var atlas_verison=req.body.atlas_version;
var atlas_version=req.body.atlas_version;
var date_created= new Date().toISOString().slice(0, 19).replace('T', ' ');
var date_changed=new Date().toISOString().slice(0, 19).replace('T', ' ');
var created_by=req.session.user.uid;
Expand All @@ -127,7 +164,7 @@ module.exports = function(connection) {

console.log(id+" "+latitude+longitude+name+url+type+image+patients+encounters+date_changed+" "+date_created);

connection.query('insert into atlas values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [id,latitude,longitude,name,url,type,image,patients,encounters,observations,contact,email,notes,data,atlas_verison,date_created,date_changed,created_by,show_counts,openmrs_version,distribution], function (error, rows,field) {
connection.query('insert into atlas values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [id,latitude,longitude,name,url,type,image,patients,encounters,observations,contact,email,notes,data,atlas_version,date_created,date_changed,created_by,show_counts,openmrs_version,distribution], function (error, rows,field) {
if(!!error){
console.log(error);
}
Expand Down Expand Up @@ -191,7 +228,7 @@ module.exports = function(connection) {
var email=req.body.email;
var notes=req.body.notes;
var data=req.body.data;
var atlas_verison=req.body.atlas_version;
var atlas_version=req.body.atlas_version;
var date_changed=new Date().toISOString().slice(0, 19).replace('T', ' ');
var show_counts=req.body.show_counts;
var openmrs_version=req.body.openmrs_version?req.body.openmrs_version:"unknown";
Expand All @@ -204,7 +241,7 @@ module.exports = function(connection) {

console.log(id+" "+latitude+longitude+name+url+type+image+patients+encounters+date_changed);

connection.query(query, [latitude,longitude,name,url,type,image,patients,encounters,observations,contact,email,notes,data,atlas_verison,date_changed,show_counts,openmrs_version,distribution,id], function (error, rows,field) {
connection.query(query, [latitude,longitude,name,url,type,image,patients,encounters,observations,contact,email,notes,data,atlas_version,date_changed,show_counts,openmrs_version,distribution,id], function (error, rows,field) {
if(!!error){
console.log(error);
}
Expand All @@ -227,11 +264,11 @@ module.exports = function(connection) {
var encounters=req.body.encounters;
var observations=req.body.observations;
var data=req.body.data;
var atlas_verison=req.body.atlas_version;
var atlas_version=req.body.atlas_version;
var date_changed=new Date().toISOString().slice(0, 19).replace('T', ' ');
var openmrs_version=data.version;

connection.query('UPDATE atlas SET patients=?,encounters=?,observations=?,data=?,atlas_version=?,date_changed=?,openmrs_version=? WHERE id =?', [patients,encounters,observations,data,atlas_verison,date_changed,openmrs_version,id], function (error, rows,field) {
connection.query('UPDATE atlas SET patients=?,encounters=?,observations=?,data=?,atlas_version=?,date_changed=?,openmrs_version=? WHERE id =?', [patients,encounters,observations,data,atlas_version,date_changed,openmrs_version,id], function (error, rows,field) {
if(!!error){
console.log(error);
}
Expand Down
1 change: 1 addition & 0 deletions views/admin/admin.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<a href="/admin/types"><p>Manage Types</p></a>
<a href="/admin/versions"><p>Manage Versions</p></a>
<a href="/admin/distributions"><p>Manage Distributions</p></a>
<a href="/markers/download"><p>Download Marker Data</p></a>
</div>
</div>
</div>
Expand Down

0 comments on commit 4aa8779

Please sign in to comment.