Last active
September 6, 2016 03:01
-
-
Save vunb/3a50de5b74e7186019a7b053f93602d4 to your computer and use it in GitHub Desktop.
Demo sails (hồ sơ y tế)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var _ = require('lodash') | |
, async = require("async") | |
, logger = sails.log | |
; | |
module.exports = { | |
_config: { | |
actions: true, | |
shortcuts: false, | |
rest: false | |
}, | |
create: function (req, res, next) { | |
var user = req.user; | |
var code = req.param("code"); | |
var patient = req.param("patient"); | |
var patientName = req.param("patientName"); | |
var doctor = req.param("doctor"); | |
var selectedTreatments = req.param("selectedTreatments"); | |
var selectedMedicines = req.param("selectedMedicines"); | |
var numTreatments = 0; | |
var numMedicines = 0; | |
if (selectedMedicines) { | |
numMedicines = selectedMedicines.length; | |
} | |
if (selectedTreatments) { | |
numTreatments = selectedTreatments.length; | |
} | |
async.waterfall([ | |
function getDoctorInfo(callback) { | |
Doctor.findOne({ | |
appUser: user.id | |
}).then(function (result) { | |
callback(null, result); | |
}).catch(function (err) { | |
callback(err); | |
}) | |
}, | |
function createHealthRecord(doctor, callback) { | |
// save a new health record | |
HealthRecords.create({ | |
appUser: user.id, | |
code: code, | |
patient: patient, | |
patientName: patientName, | |
doctor: doctor.id, | |
numMedicines: numMedicines, | |
numTreatments: numTreatments | |
}).then(function addTreatments(record) { | |
callback(null, record, doctor); | |
}).catch(function (err) { | |
callback(err); | |
}); | |
}, | |
function addTreatments(record, doctor, callback) { | |
if (selectedTreatments) { | |
var items = selectedTreatments.map(function (item) { | |
item.code = record.code; | |
item.patient = record.patient; | |
item.doctor = record.doctor; | |
item.appUser = record.appUser; | |
item.healthRecord = record.id; | |
item.treatment = item.id; | |
item.treatmentCode = item.code; | |
item.treatmentName = item.name; | |
return item; | |
}); | |
HealthTreatmentRecord.createEach(items).exec(function (err, results) { | |
if (!err) { | |
logger.info("addTreatments ok"); | |
callback(null, record, doctor); | |
} else { | |
logger.error("addTreatments error", err); | |
callback(err); | |
} | |
}); | |
} else { | |
callback(null, record, doctor); | |
} | |
}, | |
function addMedicines(record, doctor, callback) { | |
if (selectedMedicines) { | |
var items = selectedMedicines.map(function (item) { | |
item.code = record.code; | |
item.patient = record.patient; | |
item.doctor = record.doctor; | |
item.appUser = record.appUser; | |
item.healthRecord = record.id; | |
item.medicine = item.id; | |
item.medCode = item.code; | |
item.medName = item.name; | |
return item; | |
}); | |
HealthMedicineRecord.createEach(items).exec(function (err, results) { | |
if (!err) { | |
logger.info("addMedicines ok"); | |
callback(null, record); | |
} else { | |
logger.error("addMedicines error", err); | |
callback(err); | |
} | |
}); | |
} else { | |
callback(null, record, doctor); | |
} | |
} | |
], function (err, result) { | |
if (!err) { | |
logger.info("Create health record successfully"); | |
res.ok(result); | |
} else { | |
logger.error("ERROR: Create health record", err); | |
res.serverError(err); | |
} | |
}); | |
}, | |
update: function (req, res, next) { | |
var user = req.user; | |
var code = req.param("code"); | |
var patient = req.param("patient"); | |
var doctor = req.param("doctor"); | |
var id = req.param("id"); | |
if (!id) { | |
res.badRequest("ID must not be empty"); | |
} | |
HealthRecords.update({ id: id, appUser: user.id }, { | |
code: code, | |
patient: patient, | |
doctor: doctor | |
}).then(function (results) { | |
logger.info("Update HealthRecords successfully"); | |
res.ok({ | |
data: results | |
}); | |
}).catch(function (err) { | |
logger.error("ERROR: Update HealthRecords", err); | |
res.serverError(err); | |
}); | |
}, | |
delete: function (req, res, next) { | |
var user = req.user; | |
var id = req.param("id"); | |
HealthRecords.destroy({ | |
id: id, | |
appUser: user.id | |
}).then(function (results) { | |
logger.info("Delete HealthRecords successfully"); | |
res.ok({ | |
data: results | |
}); | |
}).catch(function (err) { | |
logger.error("ERROR: Delete HealthRecords", err); | |
res.serverError(err); | |
}); | |
}, | |
get: function (req, res, next) { | |
var user = req.user; | |
var page = req.param("page") || 1; | |
var limit = req.param("limit") || 5; | |
HealthRecords.find({ | |
appUser: user.id | |
}).sort('createdAt DESC') | |
.paginate({ page: page, limit: limit }) | |
.populate("patient") | |
.then(function (records) { | |
var count = HealthRecords.count({ appUser: user.id }) | |
.then(function (result) { | |
return result; | |
}); | |
return [count, records]; | |
}).spread(function (count, records) { | |
res.ok({ | |
count: count, | |
data: records | |
}); | |
}).catch(function (err) { | |
res.serverError(err); | |
}); | |
}, | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var _ = require('lodash') | |
, logger = sails.log; | |
module.exports = { | |
_config: { | |
actions: true, | |
shortcuts: false, | |
rest: false | |
}, | |
updateConfig: function (req, res, next) { | |
var module = req.param("module"); | |
var key = req.param("key"); | |
var value = req.param("value"); | |
var user = req.user; | |
var creator = user.id; | |
var recordInfo = { | |
creator: creator, | |
module: module, | |
key: key, | |
value: value | |
}; | |
// log info | |
logger.info("UserSettings model:", recordInfo); | |
if (!module) { | |
res.badRequest("Module is required"); | |
} else if (!key) { | |
res.badRequest("Key is required"); | |
} else if (!value) { | |
res.badRequest("Value is required"); | |
} | |
UserSettings.findOne({ | |
creator: creator, | |
module: module, | |
key: key | |
}).then(function (settings) { | |
if (!settings) { | |
// create new settings | |
return UserSettings | |
.create(recordInfo) | |
.then(function (result) { | |
res.ok(result); | |
}); | |
} else { | |
var updateValue = settings.value; | |
for (var i in value) { | |
if (!i.startsWith("$")) { | |
// not system config | |
updateValue[i] = value[i]; | |
} | |
} | |
return UserSettings | |
.update({ id: settings.id, creator: creator }, { value: updateValue }) | |
.then(function (result) { | |
var record = result.length > 0 ? result[0] : false; | |
return record; | |
}); | |
} | |
}).then(function (result) { | |
res.ok(result); | |
}).catch(function (err) { | |
logger.error("ERROR: update UserSettings", err); | |
res.serverError(err); | |
}); | |
}, | |
/** | |
* Get all user settings | |
*/ | |
getAllOrDefault: function (req, res, next) { | |
var user = req.user; | |
var module = req.param("module"); | |
var key = req.param("key"); | |
var query = { | |
creator: user.id, | |
module: module, | |
key: key | |
} | |
if (!key) { | |
delete query.key; | |
} | |
UserSettings.find(query) | |
.then(function (result) { | |
if (!result || result.length == 0) { | |
var query = { | |
creator: -1, | |
module: module, | |
key: key | |
}; | |
if (!key) { | |
delete query.key; | |
} | |
logger.info("get default UserSettings: ", query); | |
var getDefault = UserSettings.find(query); | |
return [false, getDefault]; | |
} else { | |
return [true, result]; | |
} | |
}).spread(function (isPersonal, settings) { | |
if (!isPersonal) { | |
// create user personal settings | |
for (var setting of settings) { | |
var cloned = setting.toObject(); | |
logger.info("Clone user settings: ", cloned.key); | |
delete cloned.id; | |
cloned.creator = user.id; | |
UserSettings.create(cloned) | |
.then(function (result) { | |
logger.info("Create user setting: ", result.key, ", User:", result.creator); | |
}); | |
} | |
} | |
// return data | |
return settings; | |
}).then(function (settings) { | |
logger.info("User settings: ", settings); | |
res.ok(settings); | |
}).catch(function (err) { | |
res.serverError(err); | |
}) | |
}, | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment