omniacare
Version:
CHR OmniaCare API SDK for NodeJS
102 lines (96 loc) • 3.5 kB
JavaScript
;
var api = require('../api');
var _ = require('lodash'),
moment = require('moment'),
validator = require('node-validator'),
xml2js = require('xml2js');
function batch() {
return {
/**
* Create a batch
* @param {Object} params Creation parameters
* @param {string} params.Batch Batch name
* @param {string} [params.BatchDate=Now()] Batch Date
* @param {number} params.AduustmentCodeID Default adjustment code to use for this batch
* @param {number} [params.BatchAmount=0] Starting batch amount
* @param {number} [params.PostingStatus=0] 0=unposted; 1=partially posted; 2=posted
* @param {string} [params.Remarks] Comments
* @param {number} [params.ReversalAmount=0] Starting reversal amount
* @param {number} params.UserID User creating the batch
* @return {Object}
*/
create: function(params) {
var schema = validator.isObject()
.withRequired('Batch')
.withOptional('BatchDate')
.withRequired('AdjustmentCodeID')
.withOptional('BatchAmount')
.withOptional('PostingStatus')
.withOptional('Remarks')
.withOptional('ReversalAmount')
.withRequired('UserID');
validator.run(schema, params, function(errCount, errors) {
if (errCount) {
_.forEach(errors, function(error) {
throw new Error(error.parameter + ': ' + error.value + ' is a(n) ' + error.message);
});
}
});
var defaultParams = {
'Action': 'Add',
'BatchID': 0,
'BatchAmount': 0,
'BatchDate': moment(new Date()).format('M/D/YYYY'),
'PostingStatus': 0,
'ReversalAmount': 0,
'Remarks': ''
};
var requestData = {
'CreateBatch': {
'Batch': [{
'$': _.assign({}, defaultParams, params)
}]
}
};
var xmlBuilder = new xml2js.Builder();
var postData = xmlBuilder.buildObject(requestData);
return api.executeHTTP('CreateBatch', postData);
},
/**
* Returns a list of batches matching search criteria
* @param {Object} searchParams Search parameters
* @param {string} searchParams.StartDate Start Date
* @param {string} searchParams.EndDate End Date
* @param {number} [searchParams.IndludePosted] 0=all; 1=unposted; 2=posted
* @param {number} [searchParams.UserID] User ID of the user that created the batch
* @param {string} [searchParams.Batch] Batch name
* @return {Object}
*/
list: function(searchParams) {
var schema = validator.isObject()
.withRequired('StartDate', validator.isDate({format: ['YYYY-MM-DD HH:mm:ss']}))
.withRequired('EndDate', validator.isDate({format: 'YYYY-MM-DD HH:mm:ss'}))
.withOptional('IncludePosted')
.withOptional('UserID')
.withOptional('Batch');
validator.run(schema, searchParams, function(errCount, errors) {
if (errCount) {
_.forEach(errors, function(error) {
throw new Error(error.parameter + ': ' + error.value + ' is a(n) ' + error.message);
});
}
});
var requestData = {
'GetBatchList': {
'Batch' : [{
'$': searchParams
}]
}
};
var xmlBuilder = new xml2js.Builder();
var postData = xmlBuilder.buildObject(requestData);
return api.executeHTTP('GetBatchList', postData);
}
};
}
module.exports = batch;