UNPKG

omniacare

Version:

CHR OmniaCare API SDK for NodeJS

102 lines (96 loc) 3.5 kB
"use strict"; 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;